0
<input type="button" name="continue" id="continue" value="Continue" onclick="<? 
            if($_POST['rules']==null) {
                echo "hello();";
                }
            elseif($_POST['rules']!=null) {
                echo "myRedirect();";
            }   

                 ?>" > 

我有一个带有文本区域的表格。当用户在 textarea 为空时点击按钮时,它应该执行函数 hello(),如果 textarea 不为空,它应该执行函数 myRedirect()。函数 hello() 和 myRedirect() 生成不同的对话框。但它似乎不起作用。这段代码有什么问题?

4

6 回答 6

4

这是不可能的。JavaScript ( onlick) 在客户端浏览器中执行,而 PHP 在您的服务器上执行。如果您确实需要执行 PHP 代码,您应该使用 AJAX 发送另一个请求,让您的服务器执行 PHP 部分。

于 2009-09-12T06:40:25.117 回答
1

我认为它根本不起作用,因为您试图从 javascript 调用 PHP 代码。换句话说,PHP 是一种服务器端脚本语言,您正在尝试执行需要提交才能执行的服务器端代码。

要实现此功能,您只需编写此代码

 if($_POST['rules']==null)
 {
  echo "hello();";
 }
 elseif($_POST['rules']!=null)
  {
  echo "myRedirect();";
 }

在你的 PHP 页面的顶部,你会得到你想要的。或将输入类型设为“提交”

于 2009-09-12T06:44:47.837 回答
1

如果您只是检查框的值,则只需要 Javascript... 这应该可以正常工作:

<script type="text/javascript">
function check(obj_id){
    var result = document.getElementById(obj_id).value;
    if(result == ""){
        is_null();
    }else{
        is_not_null();
    }
}

function is_null(){
    alert("null");
}

function is_not_null(){
    alert("not null");
}
</script>
<input type="text" id="test" />
<button onclick="check('test')">Test</button>

将要检查的文本框的 id 传递给 check() 函数,它会查找是否在框中输入了任何内容。如果有,它会调用函数“is_null()”和“is_not_null()”,如果文本框中有内容。

于 2009-09-12T06:47:16.360 回答
0

您可能需要回发到服务器来执行您想要在 onclick 事件中运行的任何内容。

另一种解决方法是使用AJAX

于 2009-09-12T06:41:41.867 回答
0

您是否混淆了客户端和服务器端?这就是你所追求的吗?

<?php
if($_POST['rules'] == null) {
    echo "hello";
} else {
    myRedirect();
}
?>

<input type="submit" name="continue" id="continue" value="Continue">
于 2009-09-12T06:43:06.170 回答
0
<script>
function hello(){}
function myRedirect(){}
function ifnullz(el){
  if($(el)!=0){
    hello();
  }else{
    myRedirect();
  }
}
function $(el){
   document.getElementByID(el).length; //.value?? idk.. something like that.
}
</script>

<input onlcick="ifnullz('lolz');">
<textarea id="lolz"></ta>
于 2009-09-12T06:44:49.953 回答