【问题标题】:javascript validation not reading other conditions on my if else ifjavascript验证不读取我的if else if的其他条件
【发布时间】:2017-04-20 02:55:55
【问题描述】:

可能有什么问题我尝试验证输入字段名称、公司名称、密码,当我在密码字段上时,它说密码不应为空,但我已经在密码输入字段中输入了一些字符。

它似乎没有在我的 else if 上读取 password.lengthpassword != confirm_password 条件的验证

这是我的代码

$('#button-parent a').bind('click',function(e){
        var $this = $(this);
        var prev = current;
        var name = document.getElementById('name').value;
        var company_name =  document.getElementById('company_name').value;
        var password = document.getElementById('password').value;
        var confirm_password = document.getElementById('confirm_password').value;
        var email = document.getElementById('email').value;


        if( name == null || name == "") {
                alert('name is required');
                return false;

        } else if( name.length < 5) {
                alert('name must be atleast 6 characters');
                return false;

        } else if( company_name == null || company_name == ""){
                alert('company name is required');
                return false;

        } else if ( password == null || password == ""){
                alert('password field should not be empty');
                return false;

        } else if ( password.length < 8 ) {
                alert('password must be atleast 8 characters');
                return false;

        } else if ( password != confirm_password ) {
                alert('Password do not match');
                return false;
        }

【问题讨论】:

  • 如果你想检查空密码,检查你已经拥有的长度
  • 顺便说一句,所有这些null 检查都是不必要的,因为输入的.value 永远不会是null
  • 嗨 guradio 我已经删除了条件 if(password == null || password == "" ) 并且我在密码字段中输入了 8 个以上的字符并且警告是密码必须至少有 8 个字符它不应该出现的警报吗?

标签: javascript jquery validation


【解决方案1】:

r如果您使用的是 jQuery,为什么不从 $() 选择器中获取值?

$(function() { 
    $('#button-parent a').bind('click', function(e) {
        var $this = $(this);
        var prev = current;
        var name = $('#name').val();
        var company_name = $('#company_name').val();
        var password = $('#password').val();
        var confirm_password = $('#confirm_password').val();
        var email = $('#email').val();

        var errorMsg = '';
        if (name == null || name == "") {
          errorMsg += 'name is required\n';
        }
        if (name.length < 5) {
          errorMsg += 'name must be atleast 6 characters\n';
        }
        if (company_name == null || company_name == "") {
          errorMsg += 'company name is required\n';

        }
        if (password == null || password == "") {
          errorMsg += 'password field should not be empty\n';

        }
        if (password.length < 8) {
          errorMsg += 'password must be atleast 8 characters\n';

        }
        if (password != confirm_password) {
          errorMsg += 'Password do not match';
        }
        if (errorMsg != '') {
          alert(errorMsg);
          return false;
        }
    });
});

这样您可以一次显示表单中的所有错误,并且不会激怒用户。

【讨论】:

  • 我使用 getElementByid 因为 jquery 选择器没有得到值名称和公司名称似乎没问题但是当涉及到密码字段警报弹出时我确实输入了超过 8 个字符并且没​​有错误还有什么问题?
  • 好的,我认为您没有在 document.ready 中工作...查看我编辑的代码您必须在 $(function(){}) 中使用 jQuery 才能从您的元素中获得正确的结果跨度>
  • 在它工作正常之前我不知道发生了什么..顺便说一句,我试图将我的代码替换为您现在仍在工作的编辑代码
  • 你能为你的页面设置一个 jsfiddle (jsfiddle.net),然后我可以看到 HTML 发生了什么
【解决方案2】:

由于您使用的是 jQuery,因此您可以尝试使用以下代码行。

var password = $('#password').val();

要快速检查此行是否有效,您可以在开发人员工具的控制台部分键入并运行此命令。如果它有效,您应该会看到输入值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多