.val()不是函数

时间:2018-04-22 19:50:11

标签: javascript jquery html

这是我的HTML部分:



<div class="radio">
	<input type="radio" name="certain" id="oui" value="oui"/>
	<label for="oui">
	    oui
</label>
	<br />
        <input type="radio" name="certain" id="non" value="non" checked="checked"/>
	<label for="non">
	    non
	</label>
</div>
&#13;
&#13;
&#13;

var espece = $('#espece');
                var poil = $('#poil');
                var _certain = $('[name = "certain"]');
                var certain = null;

                _certain.each(function(index, element){
                    if(_certain[index].checked){
                        certain = element;
                    }
                });

                var continent_valeur = $('select option:selected').val();

                /* Test des champs */
                if(espece.val() == '' || poil.val() == '' || certain.val() == '' || continent_valeur == ""){
                    alert("Veuillez remplir tous les champs !");
                }

当我提交表单时,我的条件是否存在错误。它说Certain.val()不是函数。

但是var确定包含我的收音机的好价值是不是。

我不明白你能帮帮我吗?

4 个答案:

答案 0 :(得分:1)

val()jQuery method,仅适用于jQuery对象,对纯JavaScript元素无效。

如果你想使用普通的vanilla JS,你必须使用certain.value或者在jQuery的情况下你可以使用$(certain).val()

参考代码:

&#13;
&#13;
var espece = $('#espece');
var poil = $('#poil');
var _certain = $('[name = "certain"]');
var certain = null;

_certain.each(function(index, element) {
  if (_certain[index].checked) {
    certain = element;
  }
});

var continent_valeur = $('select option:selected').val();

/* Test des champs */
if (espece.val() == '' || poil.val() == '' || $(certain).val() == '' || continent_valeur == "") {
  alert("Veuillez remplir tous les champs !");
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="radio">
  <input type="radio" name="certain" id="oui" value="oui" />
  <label for="oui">
	    oui
</label>
  <br />
  <input type="radio" name="certain" id="non" value="non" checked="checked" />
  <label for="non">
	    non
	</label>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

当您使用.each遍历jQuery元素集合时,它会为您提供索引,元素本身。第二个参数不是jQuery包装的元素 - 它是普通元素。

使用普通的Javascript方法从元素中获取值:

`certain.value`

或者先用jQuery选择它:

`$(certain).val()`

答案 2 :(得分:1)

当您使用each时,element表示非jquery节点。 你只需要改变

certain = element;  

certain = $(element);  

你应该去。

您可以从W3Schools找到任何您可能遇到的JQuery问题:

和你的具体:

答案 3 :(得分:1)

你得到这个是因为val函数将应用于jquery对象,试试这个

$(element).val();

此外,在你的每一个中都不需要做 _certain [index] .checked ,因为你已经在回调的第二个参数中得到了元素。