我正在处理这个表单,我正在研究用自己的代码验证它的方法。我很确定我有一个可行的想法,但是我无法获得单选按钮的值。我知道他们有价值,因为每次点击一个人说出它的价值是什么,以及它是否“被检查”时我都会设置一个警报。但是当我的表单验证器试图捕获无线电值时,它们会继续以未定义的方式返回。什么?
这是我的jsFiddle,我的所有代码都在那里。我只会在下面添加一些代码段。
用于提醒无线电点击的jQuery:
$(":radio").click(function(){
alert($(this).val() + " - " + $(this).is(":checked"));
});
我得到的结果是:
用于提醒表单值的jquery:
$("#invalid").click(function(){
alert (
"BreederName: " + bName.val() + " - " + bName.hasClass("i-invalid") +
"\nYearStart: " + year.val() + " - " + year.hasClass("i-invalid") +
"\nKennelName: " + kName.val() + " - " + kName.hasClass("i-invalid") +
"\nWebsite: " + website.val() + " - " + website.hasClass("i-invalid") +
"\nCredit: " + credit.val() +
"\nExercise: " + exercise.val());
});
当字段为空或者条目无效时,我的代码会添加一个i-invalid类,我正在使用此警报进行检查。看起来像这样:
显然,我的网址验证器无效,但我稍后会担心。很明显,我并没有正确地定位我的单选按钮,但是我已经使用了所有不同的方式来定位这两个字段,并且我一直都是未定义的。有人能帮我弄清楚我哪里出错吗?
HTML表单字段(示例)
<!--Radio buttons for credit field-->
<td colspan="2"><h3>Would you like your contribution acknowledged?</h3></br></br>
<input type="radio" name="credit" value="yes" width="20">
Yes, I'd like my name listed on the Contributor's page. </br>
<input type="radio" name="credit" value="no" width="20">
No, I'd rather contribute anonymously.
<!--Sample Radio buttons for exercise field, there are 10 of them -->
<input type="radio" name="exercise" value="5" width="20">5
<input type="radio" name="exercise" value="6" width="20">6</br>
无线电字段的jQuery变量
credit = $(":radio[name=credit]:checked");
exercise = $(":radio[name=exercise]:checked");
// also tried . . .
credit = $("input radio[name=credit]:checked");
exercise = $("input radio[name=exercise]:checked");
credit = $("input[name=credit]:checked");
exercise = $("input[name=exercise]:checked");
credit = $("form radio[name='credit']:checked"); <!-- put the field name in single quotes-->
exercise = $("form radio[name='exercise']:checked");
答案 0 :(得分:1)
您正在做的是在credit
事件中设置全局变量exercise
和document.ready
。因此,当 DOM 加载时,单选按钮的值为 null ,因为此时未检查任何内容。
您需要做的是在单选按钮click
事件中设置全局变量的值。这样,当单击单选按钮时,它们将始终更新。
请参阅下面的代码。
$(":radio").click(function() {
credit = $(":radio[name=credit]:checked");
exercise = $(":radio[name=exercise]:checked");
console.log($(this).val() + " - " + $(this).is(":checked"));
});
这是 JSFIDDLE 。希望这有帮助。
编辑: 我已将alert
替换为console.log
。请检查控制台的输出。