提交表单时测试值是不是为数字不起作用

Posted

技术标签:

【中文标题】提交表单时测试值是不是为数字不起作用【英文标题】:testing if value is numeric is not working when submitting a form提交表单时测试值是否为数字不起作用 【发布时间】:2013-05-14 23:41:34 【问题描述】:

我有一个简单的代码来在提交表单之前检查值是否为数字,但即使它不是数字值,表单也会提交

<form action="asdasd" method="POST" id="my_form" >
<input type="text" name="userphone" id="userphone" />
<br />
<input type="submit" name="register" id="register" value="register" />
</form>

js代码

$(document).ready(function() 

$('#userphone').blur(function () 
var phone = $("#userphone").val();
var phonelen = phone.length;

if (!$.isNumeric(phone) || phonelen<6) 
    $("#userphone").css("background-color", "#ff9f9f");
    return false;
 else 
    $("#userphone").css("background-color", "#fff");
    return true;

)
);

function check_user_phone() 
var phone = $("#userphone").val();
var phonelen = phone.length;

if (!$.isNumeric(phone) || phonelen<6) 
    return false;
 else 
    return true;

 

$("#my_form").submit(function()
 if (!check_user_phone()) 
    return false;
 else 
    return true;

)

但即使电话值不是数字,表单仍在提交数据

【问题讨论】:

在我看来您想将事件处理程序附加到正在提交的表单,目前您只是将处理程序附加到失去焦点的电话号码输入。 您的代码运行良好jsfiddle.net/9Lpsw/1 @jq 初学者 onsubmit , js fiddle 不支持 onblur @jq 初学者你的代码工作正常。 代码已更新,请查看 【参考方案1】:

尝试将 JSFiddle 选项从 onLoad 更改为 No wrap - in &lt;head&gt;

JSFiddle:-http://jsfiddle.net/adiioo7/wfpbV/5/

JS

jQuery(function()
    $("#reg").submit(function(e)
        if(!check_phone() )  
            e.preventDefault();
        
    );
);

【讨论】:

我猜表单正在提交,即使数据不是数字。页面加载 @jqbeginner - 不,不是,在浏览器控制台(chrome/FF)中检查。

以上是关于提交表单时测试值是不是为数字不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当表单出现错误时,带有 angular.js 表单提交的 Django 不起作用

引导验证(成功)后,表单使用默认方法而不是 ajax 提交。 e.preventDefault() 不起作用?

专注于下一个输入不起作用以及当用户在最后一个输入字段时如何提交表单

C# WebBrowser 控件 - 使用 InvokeMember("Click") 提交表单不起作用

js提交不起作用不将表单数据发送到php

使用 jQuery AJAX 向所需的 PHP POST 请求处理程序提交表单不起作用