目标:读取一组文本框的当前值。如果值为“None”,则用提供的值替换该值。一旦值改变停止。
当我使用span和.text()而不是文本框和.val()时,一切正常。但是,文本框是表单的一部分。
知道它为什么会以“未定义”的形式返回?
(基本上我是根据用户输入制作一个列表)
HTML:
<input type="text" name="class1" value="None" ><br>
<input type="text" name="class2" value="None" ><br>
<input type="text" name="class3" value="None" ><br>
<input type="text" name="class4" value="None" ><br>
<input type="text" name="class5" value="None" ><br>
jquery的:
function compareClass(a)
{
var input = a;
for(x=1;x<6;x++)
{
var classText = $('.class'+x).val();
if(classText == "None")
{
$('.class'+x).val(input);
break;
}
}
}
答案 0 :(得分:9)
您告诉jQuery要查找类 class[x]
的元素,但是您要分配名称。
您可以将name
属性更改为id
s:
<input type="text" id="class1" value="None" ><br>
<input type="text" id="class2" value="None" ><br>
<input type="text" id="class3" value="None" ><br>
<input type="text" id="class4" value="None" ><br>
<input type="text" id="class5" value="None" ><br>
并按ID获取:
var classText = $('#class'+x).val(); // Note the #!
(显然,“类”现在可能没有任何意义了)
或者,您实际上可以使用class
属性,但CSS类可以分配给多个元素,因此它不适合这里。
答案 1 :(得分:1)
在jQuery中使用选择器来简化代码。 [name^=Class]
表示所有输入name
属性以Class
开头(不需要引号)
function compareClass(a)
{
$('input [name^=Class]').each(function() {
if ($(this).val() === 'None') $(this).val(a);
});
}