使用jQuery Mobile激活有效表单上的提交按钮

使用jQuery Mobile激活有效表单上的提交按钮,jquery,forms,jquery-mobile,submit,form-submit,Jquery,Forms,Jquery Mobile,Submit,Form Submit,我读了很多关于jquerymobile、按钮和表单的文档,但我并不完全理解。所以,我想停用一个提交按钮,直到表单响应无效 这是我的工作代码 $(document).ready(function() { /* $('#submit').button('enable') */ /* Console says "Uncaught TypeError: Object [object Object] has no method 'button'" */ $('#submit').attr

我读了很多关于jquerymobile、按钮和表单的文档,但我并不完全理解。所以,我想停用一个提交按钮,直到表单响应无效

这是我的工作代码

$(document).ready(function() 
{
    /* $('#submit').button('enable') */ /* Console says "Uncaught TypeError: Object [object Object] has no method 'button'" */
    $('#submit').attr("disabled", true);
    /* Do stuff */
    $('#form').live('keyup change', function()
    {
    if (isEmailValid && isTextValid)
    {
        /* $('#submit').attr("disabled", false); */ /* Button is not enable */
        $('#submit').button('enable');
    }
    });
})
...
<div class="content-primary">
    <form id="form">
    <button data-theme="a" id="submit" type="submit">Submit</button>
    </form>
</div>
$(文档).ready(函数()
{
/*$(“#提交”)。按钮('enable')*/*控制台显示“未捕获类型错误:对象[Object Object]没有方法“按钮”*/
$('#submit').attr(“disabled”,true);
/*做事*/
$('#form').live('keyup change',function())
{
如果(isEmailValid&&isTextValid)
{
/*$(“#提交”).attr(“已禁用”,false);*/*按钮未启用*/
$('提交')。按钮('启用');
}
});
})
...
提交
我的代码在Chrome、Firefox和internetexplorer中运行,但我不理解其中的逻辑:我关闭和打开提交的方式不同

然而,我的解决方案是正确的吗

谢谢你的帮助

干杯


V.

您可以使用jQuery Mobile
按钮()
功能来启用和禁用提交按钮小部件:

$(document).delegate('[data-role="page"]', 'pageinit', function () {
    var $submit = $(this).find('#submit'),
        $text   = $(this).find('input[type="text"]');
    $text.bind('keyup', function () {
        if (this.value == '') {
            $submit.button('disable');
        } else {
            $submit.button('enable');
        }
    }).trigger('keyup');
});
下面是一个演示:


另外,在使用jQuery Mobile时,您希望避免使用
document.ready
事件处理程序。相反,使用
pageinit
针对上面示例中的
data role=“page”
元素。

您可以使用jQuery Mobile
button()
函数启用和禁用submit button小部件:

$(document).delegate('[data-role="page"]', 'pageinit', function () {
    var $submit = $(this).find('#submit'),
        $text   = $(this).find('input[type="text"]');
    $text.bind('keyup', function () {
        if (this.value == '') {
            $submit.button('disable');
        } else {
            $submit.button('enable');
        }
    }).trigger('keyup');
});
下面是一个演示:


另外,在使用jQuery Mobile时,您希望避免使用
document.ready
事件处理程序。相反,使用
pageinit
针对
data role=“page”
元素,如上面的示例所示。

哦,是的!!!非常出色。谢谢,贾斯珀。我将仔细思考(并努力!)这些详细的解释。当做V.只是一个很小的提示:.trigger('keyup')用于触发初始验证,因此,如果所有文本字段都有值,则将立即启用submit按钮。辉煌的特里科是的!!!非常出色。谢谢,贾斯珀。我将仔细思考(并努力!)这些详细的解释。当做V.只是一个很小的提示:.trigger('keyup')用于触发初始验证,因此,如果所有文本字段都有值,则将立即启用submit按钮。绝招