text()不适用于选择表单输入


.text() not working for select form input

当使用jQuery单击按钮时,我正在尝试检索两个选择字段的值。以下是相关的代码片段。

我在一个外部文件中有这个:

$(document).ready(function() {
    $("#classSubmit").click(function() {
        console.log($("dept").text());
        console.log($("num").val());
    });
});

这是php脚本,它生成了我的一个select语句,第二个语句稍后作为xmlhttp请求的结果填充

<form id="addclass">
  <div class="form-group">
    <label for="dept">Department</label>
    <select class="form-control" id="dept">
      <?php    
      $departments = array("---",
        "ACCT", "AAS", "AMST", "ANTH", "ARAB",
        "ARCH", "ART", "ASIA", "ASTR", "BIOE",
        "BIOS", "BUS", "BIS", "CHE", "CHM",
        "CHIN", "CEE", "CLSS", "COGS", "COMM",
        "CIE", "CREG", "CSE", "CSB", "CPSY",
        "DES", "EES", "ECK", "ECO", "EDUC",
        "EDL", "ECE", "ESE", "ENGR", "EMC",
        "ENGL", "ESLP", "ENTP", "ES", "FIN",
        "FREN", "GERM", "GCP", "GS", "GBEN",
        "GBUS", "MBA", "HMS", "HEBR", "HIST",
        "ISE", "IBE", "IDEA", "IPRE", "IR",
        "ITAL", "JPNS", "JST", "JOUR", "LAT",
        "LAS", "LAW", "MGT", "MSE", "MKT",
        "MACC", "MAT", "MATH", "ME", "MECH",
        "MIL", "MLL", "MUS", "PHIL", "PHY",
        "POLS", "PMGT", "PSYC", "REL", "RUSS",
        "SCHP", "STS", "SOC", "SOAN", "SPAN",
        "SPED", "STAT", "SCM", "SDEV", "TLT",
        "TRAC", "TE", "THTR", "WGSS");
      foreach($departments as $dept) {
        $str = "<option>";
        $str .= $dept;
        $str .= "</option>";
        echo $str;
      }
      ?>
    </select>
  </div>
  <div class="form-group">
    <label for="num">Class:</label>
    <select class="form-control" id="num">
      <option>---</option>
    </select>
  </div>
  <button type="button" id="classSubmit" class="btn btn-primary" type="submit">Add Class</button>
</form>

当我按下classSubmit按钮时,我会得到两个回声:第一个是空白的,第二个是"未定义"的。

你知道是否有其他方法可以做到这一点,或者我的问题是否在代码中?谢谢

您没有使用正确的选择器进行选择。您需要使用#按id选择元素。尝试以下操作:

$('#dept').val();
$('#num').val();

引用自W3(http://www.w3.org/TR/html5/forms.html#attr-选项值):

value属性为元素提供一个值。option元素的值是value content属性的值(如果有),或者是元素的text IDL属性的价值(如果没有)

希望这对您有效

尝试使用id查找select,然后过滤所选选项:

$(document).ready(function() {
    $("#classSubmit").click(function() {
        console.log($("#dept > option").filter(":selected").text());
        console.log($("#num > option").filter(":selected").text());
    });
});

如果选项没有value属性,则应使用.text()

对于第二部分,有两个错误:

  • 你应该写$("#num")
  • 您提供的唯一选项子项没有价值