基本上我有一个表单显示了一堆来自mysql数据库的动态复选框 - 这很好用。我有一个名为“default”的属性,我将mysql条目的值放入,以便稍后我可以确定用户是否更改了最初显示的复选框值。这是生成这些复选框的while语句的一部分:
printf("\t<tr class='recordrow'>
\n\t\t<td><a class='page_modal' href='#mWindow%s' target='_blank'>%s</a></td>
\n\t\t<td class='ppath'>%s</a></td>
\n\t\t<td>%s</td>
\n\t\t<td><input type='checkbox' class='checkbox' name='$page_path current' default='$currentcheckbox' $currentcheckbox/><div class='page_dialog' id='mWindow%s'><img src='exit.png' class='close' alt='close'/><img src='newwin.jpg' alt='new window'/><div id='content_section'>%s</div></div> </td>
\n\t\t<td><input type='checkbox' class='checkbox' name='$page_path prospective' default='$prospectivecheckbox' $prospectivecheckbox/></td>
\n\t\t<td><input type='checkbox' class='checkbox' name='$page_path faculty' default='$facultycheckbox' $facultycheckbox/></td>
\n\t\t<td><input type='checkbox' class='checkbox' name='$page_path staff' default='$staffcheckbox' $staffcheckbox/></td>
\n\t\t<td><input type='checkbox' class='checkbox' name='$page_path external' default='$externalcheckbox' $externalcheckbox/></td>
现在我有一个小JQuery脚本,我认为应该做我想做的事情,但是我的逻辑或其他东西似乎有些错误......基本上当用户对复选框进行更改时,Jquery脚本触发并弹出警报,说明是否正在选中或取消选中复选框。然后我有一个if语句,应该看看复选框的选中状态是否与我的默认属性中的原始值不同。我在这做错了什么?如果用户更改复选框已选中/未选中状态,我希望看到我的警报“值与原始值不同”。
$(document).ready(function() {
$('.checkbox').change(function() {
if($(this).is(":checked")) {
var returnVal = confirm("checked");
if($(this).attr("default").val() != returnVal)
{
alert("Value is different from original");
//put element in changed item array
}
}
else{
var returnVal = confirm("unchecked");
var returnVal = "0";
if($(this).attr("default").val() != returnVal)
{
alert("Value is different from original");
//put element in changed item array
}
}
});
当我选中并取消选中复选框时,我的Chrome开发工具中出现此错误: 未捕获的TypeError:对象0没有方法'val'
答案 0 :(得分:0)
$(this).attr("default")
返回包含属性值的字符串。单独使用它而不调用.val()
就足够了。