【问题标题】:Can't call javascript function无法调用javascript函数
【发布时间】:2019-10-03 23:22:33
【问题描述】:

我似乎无法从我的表单中调用函数 formValidation。我尝试了所有方法,但我很确定我忽略了一些小问题

我必须添加更多文字来发布这个问题,希望这已经足够了

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <script>
        function formValidation(){
            var user = document.getElementById("username").value;
            var password = document.getElementById("password").value;
            var userValid = /^[a-zA-Z0-9]{5,10}$/;
                // username must be between 5 to 10 characters and shouldn't contain special characters
            var passwordValid = /^{8,18}$/;
                //password must be atleast 8 characters

            if(!userValid.match(user)){
                alert('Invalid username');
                return false;
            }
            echo('test');
            return true;
        }
    </script>
<h3>Register New User</h3> 

    <form name = "form1" onsubmit="return formValidation() " action="process.php" method="POST" >
<!--      Order matters, first JS script run then the next php page visited -->
        Username:<input type="text" id="username" placeholder="Enter" value="" name="username"> <br>    
        Email ID:<input type="text" name= "email"><br>
        Password: <input type="password" id="password" ><br>
        Confirm Password: <input type="password" id="password" ><br>
                 <input type="submit" name="button" value="Click here">

    </form>
</body>
</html>

【问题讨论】:

  • 我确定它会调用您的 javascript 函数。尝试在脚本开头传递一条警告语句。 alert('testing...');
  • 查看这个和你的类似的stackoverflow:stackoverflow.com/questions/8053394/…
  • @SteveB 提到的答案在 jQuery 中。该脚本是基于纯 Javascript 编写的。
  • var passwordValid = /^{8,18}$/;删除此行并尝试。这是导致问题的原因。
  • 那么 Akbar... 你会回应收到的所有帮助吗?

标签: php html


【解决方案1】:

您必须将字符串与正则表达式匹配,而不是将正则表达式与字符串匹配。例如str.match(regex); 而不是 regex.match(str);

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <script>
        function formValidation(){
            var user = document.getElementById("username").value;
            var password = document.getElementById("password").value;
            var userValid = /^[a-zA-Z0-9]{5,10}$/;
                // username must be between 5 to 10 characters and shouldn't contain special characters
            var passwordValid = /^[a-zA-Z0-9]{8,18}$/;
                //password must be atleast 8 characters

            if(!user.match(userValid)){
                alert('Invalid username');
                return false;
            }
        }
    </script>

<h3>Register New User</h3> 




    <form name = "form1" onsubmit="return formValidation() " action="process.php" method="POST" >
<!--      Order matters, first JS script run then the next php page visited -->
        Username:<input type="text" id="username" placeholder="Enter" value="" name="username"> <br>    
        Email ID:<input type="text" name= "email"><br>
        Password: <input type="password" id="password" ><br>
        Confirm Password: <input type="password" id="password" ><br>
                 <input type="submit" name="button" value="Click here">

    </form>




</body>
</html>

【讨论】:

  • 啊,是的,谢谢
  • @AkbarHashmi 不客气。如果这解决了您的问题,如果您能将答案标记为正确,我将不胜感激。
【解决方案2】:

javascript中没有像echo这样的函数,所以去掉echo函数就可以了

打印是一个php函数

错误一:

<script>
function validateForm() {
    var x = document.forms["myForm"]["fname"].value;
    echo('asd');
    if (x == "") {
        alert("Name must be filled out");
        return false;
    }
    
}
</script>

<body>

<form name="myForm" 
onsubmit="return validateForm()" method="post">
Name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>

</body>

工作一个

<script>
function validateForm() {
    var x = document.forms["myForm"]["fname"].value;
   
    if (x == "") {
        alert("Name must be filled out");
        return false;
    }
    
}
</script>
<body>

<form name="myForm" 
onsubmit="return validateForm()" method="post">
Name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>

</body>
使用未知函数或语法错误时,不会调用 javascript

【讨论】:

  • 是的,有一个等价于 echo。它被称为 printfreturn @jasinthpremkumar
  • 啊这让我很困惑同时学习 php 和 JS
  • @AkbarHashmi 是我的答案是解决您的问题吗?如果将其标记为已解决:)
猜你喜欢
  • 2013-03-20
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多