我的注册表单上有一段代码存在问题。用户即将选择帐户类型。 (1和2)更改表单上所需的字段。
我已将div中的必填字段包装起来,以便更容易访问它们,但是我遇到了将所需属性添加到输入中的问题。
function changeAccount(input)
{
var selected = $(input).data("type");
if (selected == "1")
{
$('#at-1-inputs').slideDown(500);
$('#at-2-inputs').slideUp(500);
$('#at-2-inputs').find('input').each(function()
{
$(this).removeAttr('required');
});
$('#at-1-inputs').find('input').each(function()
{
$(this).addAttr('required');
});
}
else
{
// SAME AS ABOVE IN REVERSE
}
}
但每当我更改单选按钮时,在我的JS控制台中我都会得到一个
Uncaught TypeError: undefined is not a function
我已经检查过,单击单选按钮时肯定会调用该函数。
有没有人对此问题有任何见解?
答案 0 :(得分:0)
改变这个:
$(this).addAttr('required');
到此:
$(this).attr('required', 'required');
或
$(this).prop('required', true);
.addAttr()
在jQuery中不可用。您应该使用.attr()
或.prop()
来设置属性/属性。
function changeAccount(input)
{
var selected = $(input).data("type");
if (selected == "1")
{
$('#at-1-inputs').slideDown(500);
$('#at-2-inputs').slideUp(500);
$('#at-2-inputs').find('input').each(function()
{
$(this).prop('required', false); // <----use .prop() instead
});
$('#at-1-inputs').find('input').each(function()
{
$(this).prop('required', true); //<-----use .prop() instead
});
}
else
{
// SAME AS ABOVE IN REVERSE
}
}