1

这对我来说似乎很奇怪,但是当我调用该函数时,我的弹出确认框会起作用,但是一旦我尝试从我的 php 代码中的表单中获取值,弹出框根本不起作用!

javascipt:

function ConfirmBox(){
    cert = cValForm.elements["cVal"].value;
    answer = confirm("Are you sure you want to delete " + cert + " and all of its courses?");
     if (answer){
         alert("Entry Deleted");
     }
     else{
         alert("No action taken");
     }             
}

PHP:

echo "<form name='cValForm'>";
echo "<input type='hidden' name='cVal' value='TEST' /> ";
echo "<input type='button' onclick='ConfirmBox()' value='Delete'/>";
echo "</form>";

一旦我注释掉该行:

cert = cValForm.elements["cVal"].value;

除了摆脱字符串中的证书值之外,弹出窗口也完全正常。我从表格中得到的价值是错误的吗?或者我在这里完全错过了什么?谢谢!

4

4 回答 4

2

我认为您的脚本中断了,因为它无法找到该cVal字段的值。

更改您的 HTML 以使用 ID 和名称:

<form name='cValForm'>
  <input type='hidden' id="cVal" name='cVal' value='TEST' />
  <input type='button' onclick='ConfirmBox()' value='Delete'/>
</form>

然后首先检查 JavaScript,如果元素被选中:

function ConfirmBox(){
    var certField = document.getElementById( 'cVal' );
    var cert = certField ? certField.value : '';
    var answer = confirm("Are you sure you want to delete " + cert + " and all of its courses?");
     if (answer){
         alert("Entry Deleted");
     }
     else{
         alert("No action taken");
     }             
}

此外,您应该将关键字添加var到所有变量声明中,以将这些变量的范围限制为本地函数。在您的情况下,这些变量将是全局的,这可能会产生一些副作用。

于 2012-12-04T10:00:17.473 回答
1

试试这个

function ConfirmBox(){
    cValForm = document.forms[index];
    cert = cValForm.elements["cVal"].value;
    answer = confirm("Are you sure you want to delete " + cert + " and all of its courses?");
     if (answer){
         alert("Entry Deleted");
     }
     else{
         alert("No action taken");
     }             
}
于 2012-12-04T10:00:58.063 回答
1

试试下面的代码:

var cert = document.getElementsByName("cVal").value
于 2012-12-04T10:02:55.000 回答
0

JavaScript 第 2 行更改为:

cert = document.getElementById('cVal');

PHP 第 2 行更改为:

echo "<input type='hidden' id='cVal' value='TEST' /> ";
于 2012-12-04T10:01:47.580 回答