如果用户更改了最初的复选框值,则JQuery复选框显示警告

时间:2014-01-16 22:17:27

标签: php jquery forms checkbox nested-if

基本上我有一个表单显示了一堆来自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'

1 个答案:

答案 0 :(得分:0)

$(this).attr("default")返回包含属性值的字符串。单独使用它而不调用.val()就足够了。