JavaScript函数与PHP代码无法正常工作

时间:2014-08-02 15:24:13

标签: javascript php html forms validation

我有一个包含JavaScript和PHP验证的表单。表单的一个功能是JavaScript函数,它复制DIV并将其添加到页面中。复制功能没有任何问题,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);

2 个答案:

答案 0 :(得分:1)

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

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

<强> PHP

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

<强> JavaScript的:

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

答案 1 :(得分:0)

$('#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 ...希望这有帮助