表单输入禁用在chrome和firefox之间的工作方式不同

时间:2011-06-03 12:41:19

标签: jquery html asp.net-mvc firefox google-chrome

我目前有一个带有禁用提交输入的表单。在firefox 4.0中,如果你按回车没有任何反应(这就是我想要的)。

在Chrome(11)或IE 7中,它会尝试提交页面。

是否有一些Jquery会使Chrome&在这个例子中,IE的行为类似于Firefox?

我为人们创建了一个测试页 - http://jsfiddle.net/tEsEU/1/

这是输出html

<!DOCTYPE html>
<html lang="en-CA">
<head>
    <title>Test</title>
</head>
<body>
    <div class="page">
        <div id="header">
            <div id="title">
                <h1>My App</h1>
            </div>
            <div id="logindisplay">
            </div>
            <div id="menucontainer">
                <ul id="menu">
                </ul>
            </div>
        </div>
        <div id="main">
            <div>
<form action="/Home/ChangePeoPerm" method="post">    
    <label for="userName" class="visibleFalse">asdfsdf</label>
    <input type="text" name="userName" id="userName" value="d" />
    <input type="submit" name="btnAddUser" id="btnAddUser" value=">>" disabled="disabled" />
</form></div>


            <div id="footer">
            </div>
        </div>
    </div>
</body>
</html> 

这是我的mvc View

<div>
                @using (Html.BeginForm("ChangePeoPerm", "Home"))
                {
                    <label for="userName" class="visibleFalse">asdfsdf</label>
                    <input type="text" name="userName" id="userName" value="d" />
                    <input type="submit" name="btnAddUser" id="btnAddUser" value=">>" disabled="disabled" />
                }
</div>

2 个答案:

答案 0 :(得分:2)

它看起来像是Chrome中的一个错误。建议的解决方案是使用javascript订阅表单的onsubmit事件,如果按钮被禁用,则取消提交。以下是使用jQuery实现此目的的方法:

$(function() {
    $('form').submit(function() {
        return !$(':submit', this).is(':disabled');
    });
});

答案 1 :(得分:1)

您可以使用jQuery以编程方式阻止提交事件:

$("form").submit(function(){
    return $("#btnAddUser").attr("disabled") != "disabled";
});