【问题标题】:JavaScript function with PHP code not working带有 PHP 代码的 JavaScript 函数不起作用
【发布时间】:2014-08-02 15:24:12
【问题描述】:

我有一个带有 JavaScript 和 PHP 验证的表单。表单的功能之一是复制 DIV 并将其添加到页面的 JavaScript 函数。复制功能没有任何问题,PHP 和 Javascript 验证对初始 DIV 有效。​​

问题: PHP 验证不适用于新创建的 DIV。

换句话说,我有一个使用 JavaScript 函数复制的 DIV,并且有一些 PHP 代码。问题在于 PHP 代码仅适用于初始 DIV 而不是新创建的 DIV。

这是复制的 HTML 代码:

<div id="addinput">

<p> lorem 
   <input onBlur="data(this)" type="text"  id="valA" name="valA" 
    value="<?php   echo  ($valA);?>"/> 
   <span><?php echo $valAErr;?></span> 

    <select id="valD" name="valD" size="1">
       <option selected disabled hidden value=''></option>
       <option value="valueA">A</option>
       <option value="valueB">B</option> 
    </select>
    <span class="error"><?php echo $valDErr;?></span> 

    <a href="#" id="addNew">Add</a>
</p>
</div>

这是复制 DIV 的初始 JavaScript 函数。这是在我在 Javascript 函数和 HTML 代码中添加 PHP 代码之前制作的,并且可以正常工作。

$(function() {
var addDiv = $('#addinput');
var i = $('#addinput p').size() + 1;
$('#addNew').live('click', function() {
$('<p> lorem 
       <input onBlur="data(this)" type="text" id="valA" name="valA' + i +'" 
        value=""/>


        <select id="valD" name="valD' + i +'" name="tip" size="1">
           <option selected disabled hidden value=''></option>
           <option>A</option>
           <option>B</option>
        </select>

        <a href="#" id="remNew">Delete</a> 
</p>').appendTo(addDiv);

i++;

return false;
});

$('#remNew').live('click', function() {
if( i > 2 ) {
$(this).parents('p').remove();
i--;
}
return false;
});
});

这是我用 PHP 编写的 JavaScript 代码,但它不起作用:

$('#addNew').live('click', function() {
$('<p>lorem

      <input onBlur="data(this)" type="text" id="valA" name="valA' + i +'" 
       value="<?php echo ($valA);?>"/>
      <span class="eroareData, error"> <?php echo $valAErr;?> </span> 

      <select id="valD" name="valD' + i +'" name="tip" size="1">
            <option selected disabled hidden value=''></option>
            <option value="A">A</option>
            <option value="B">B</option>
      </select> 
      <span class="error"><?php echo $valCErr;?></span>
     <a href="#" id="remNew">Delete</a> </p>').appendTo(addDiv);

【问题讨论】:

  • 您不能使用 JavaScript,一种客户端语言。并期望它直接执行服务器端代码。您将需要使用 AJAX。
  • 像这样使用 jQuery 选择器真的很讨厌。这没有任何意义。简化它!亲爱的上帝...
  • Ok... 因为我还不知道 AJAX,所以表单的那部分现在只有 javascript 验证。非常感谢
  • 对于 Marco:没有论据,但您打算如何使用它?请添加一个示例,以便我更好地理解
  • 内联 PHP 代码将在脚本首次呈现到浏览器时执行,而不是在您单击某些内容时执行。但是,虽然我不完全遵循您在做什么,但我不相信您根本需要 PHP/服务器端。复制 div 可以在纯 jQuery 中完成。

标签: javascript php html forms validation


【解决方案1】:

似乎您正在尝试添加一些错误消息或其他内容 (这就是我可以组成的代码)

尝试先在一段 php 代码中验证它,然后创建一个字符串并在其中动态添加消息。

PHP

// Validation stuff here
$script_string = "<div>". $valDErr ."</div>";

JavaScript:

$("#addNew").click(function(event){
    $("#appendDiv").append("<?php echo $script_string; ?>");
});

【讨论】:

  • 更好的是,append(&lt;?php echo json_encode($script_string) ?&gt;)。这将添加引号,并进行任何必要的转义。
【解决方案2】:
$('#addNew').on('click', function() { // live() is dead =)
    $('<p>De la <input onBlur="data(this)" type="text" id="valA" name="valA' + i +'" value="' + <?php echo $valA; ?> + '"/><span class="eroareData, error">' + <?php echo $valAErr; ?> + '</span> pana la <input onBlur="data2(this)" type="text" id="valB" name="valb' + i +'" value="' + <?php echo $valB; ?> + '"/><span class="eroareData2' + i +', error">' + <?php echo $valBErr; ?> + '</span> la pretul de <input onBlur="numar2(this)" type="text" id="valC" name="valC' + i +'" value="' + <?php echo $valC; ?> + '" /> <span class="eroareNumere2' + i +', error">' + <?php echo $valCErr; ?> + '</span> LEI pe <select id="valD" name="valD' + i +'" name="tip" size="1"><option selected disabled hidden value=''></option><option value="zi">zi</option><option value="samptamana">samptamana</option><option value="luna">luna</option></select> <a href="#" id="remNew">Sterge</a> </p>').appendTo(addDiv);
});

PHP 将在您的 JavaScript 之前执行,因此您无需转义双引号...我刚刚添加了一些 JavaScript concat 以提高代码可读性...希望对您有所帮助

【讨论】:

  • 我尝试了 on('click') 功能,但它不起作用。当我放置实时功能时,它可以工作。关于为什么的任何想法? :)
  • 你的 jquery 版本是什么? on() 方法出现在 jQuery1.7
  • 好主意。我将 JQuery 版本更新为 并且 on('click function') 有效.奇怪的是,它只适用于添加按钮而不是删除按钮,即使我更新了它们
猜你喜欢
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多