我有一个包含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);
答案 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 ...希望这有帮助