1

我有一个这样的Javascript函数:

function validatePath() 
{
    var path = document.getElementById('server_path').value;
    if (path.search(":") == -1)
    {
        document.getElementById('path_error').innerHTML="Invalid Server Path!";
    }
    else
    {
        var host_name = path.split(":")[0]
        var regex = new RegExp("^[a-zA-Z0-9.]*$"); 
        if(!(regex.test(host_name)))
        {
            document.getElementById('path_error').innerHTML="Invalid Server Path!";
        } 

    }
}

如果 server_path 不正确,它会显示错误,但仍会提交表单。在 server_path 正确之前,我不希望用户能够提交表单。我怎样才能做到这一点?

4

3 回答 3

3

通常的策略是使用表单的提交处理程序并在验证失败时返回 false 以停止提交:

<form onsubmit="return validatePath();" ...>

然后在函数中(伪代码):

function validatePath() {

  if (validation fails) {
    return false;
  }

  // return any value other than false and the form will submit,
  // including undefined
}
于 2013-05-30T06:21:16.123 回答
1

另一个解决方案:

function validatePath() {
    var path = document.getElementById('server_path').value;
    var submitButton = document.getElementById('submit');

    document.getElementById('path_error').innerHTML='';
    submitButton.removeAttribute('disabled');

    if (path.search(":") == -1){
        document.getElementById('path_error').innerHTML="Invalid Server Path!";
        submitButton.setAttribute('disabled', 'disabled');
    }
    else{
        var host_name = path.split(":")[0]
        var regex = new RegExp("^[a-zA-Z0-9.]*$"); 
        if(!(regex.test(host_name))){
            document.getElementById('path_error').innerHTML="Invalid Server Path!";
            submitButton.setAttribute('disabled', 'disabled');
        } 

    }

 }

看实际操作:http: //jsfiddle.net/rUcQc/

于 2013-05-30T06:26:06.140 回答
0

您可以禁用提交按钮,直到路径正确。像这样

<input type='submit' disabled='true' onclick='return validatePath()' id='submit'/>

我对您的 javascript 代码进行了一些更改。

function validatePath() {
        var path = document.getElementById('server_path').value;
        if (path.search(":") == -1){
            document.getElementById('path_error').innerHTML="Invalid Server Path!";
        }
        else{
            var host_name = path.split(":")[0]
            var regex = new RegExp("^[a-zA-Z0-9.]*$"); 
            if(!(regex.test(host_name))){
                document.getElementById('path_error').innerHTML="Invalid Server Path!";
            }
              else {
               document.getElementById('submit').disabled=false;
              } 

            }

    }
于 2013-05-30T06:23:02.880 回答