Jquery函数与php表单冲突
首先是代码:
(function($){ $countForms = 1; $.fn.addForms = function(idform){ var myform = ""+ " "+ " Field A ("+$countForms+"): "+ " "+ " Field B ("+$countForms+"): "+ " "+ " "+ " "+ "
"; if(idform=='mybutton'){ myform = $(""+myform+""); $("button", $(myform)).click(function(){ $(this).parent().parent().remove(); }); $(this).append(myform); $countForms++; } }; })(jQuery); $(function(){ $("#mybutton").bind("click", function(e){ e.preventDefault(); var idform=this.id; if($countForms<3){ $("#container").addForms(idform); } }); });
<?php $ligax=mysqli_connect('localhost','root'); if(!$ligax){ echo ' Falha na ligação.'; exit; } mysqli_select_db($ligax,'dados_arrays'); if ( isset( $_POST['field'] ) ) { echo '
'; foreach ( $_POST['field'] as $diam ) { // here you have access to $diam['top'] and $diam['bottom'] echo ''; echo ' ', $diam['a'], ' '; echo ' ', $diam['b'], ' '; echo ' '; } echo '
'; } ?>
代码的第一部分是一个jquery函数,它可以在需要时复制我的表单的字段。 第二个是表单本身和$ _POST方法来接收来自表单的值。
我的问题是这部分“foreach($ _POST [‘field’]为$ diam)”没有从jquery的重复字段中捕获值。 也许是因为它是在页面运行后出现的东西,我不知道。 这就是我需要帮助和建议的原因。 我如何捕获来自jquery生成的输入的值?
谢谢!
你正在寻找的是.noConflict
API: http : .noConflict
许多JavaScript库使用$作为函数或变量名,就像jQuery一样。 在jQuery的情况下,$只是jQuery的别名,因此所有function都可以在不使用$的情况下使用。 如果我们需要在jQuery旁边使用另一个JavaScript库,我们可以通过调用$ .noConflict()将$的控制权返回给另一个库:
http://api.jquery.com/jQuery.noConflict/
jQuery.noConflict(); (function($) { $(function() { // more code using $ as alias to jQuery }); })(jQuery); // other code using $ as an alias to the other library
在“无混淆”模式下,$快捷方式不可用,并且使用了更长的jQuery。 例如:
$(document).ready(function(){ $(#somefunction) ... });
变为:
jQuery(document).ready(function(){ jQuery(#somefunction) ... });
为了使用$的默认jQuery快捷方式,您可以在代码周围使用以下包装器:
jQuery(document).ready(function($) { // $() will work as an alias for jQuery() inside of this function });
该包装将导致您的代码在页面加载完成时执行,而$将用于调用jQuery。 如果由于某种原因,您希望您的代码立即执行(而不是等待DOM ready事件),那么您可以使用此包装方法:
(function($) { // $() will work as an alias for jQuery() inside of this function })(jQuery);
好读: http : //codex.wordpress.org/Function_Reference/wp_enqueue_script#jQuery_noConflict_wrappers
如果你热衷于:
在jQuery中$是什么意思?
这应该有助于解渴:)
可能希望这有帮助!
在iife中理解$ vs. jQuery而不是$
更新请注意您需要仔细检查其他地方,并做到这一点,rest冲突将得到解决。
jQuery.noConflict(); (function($){ $countForms = 1; $.fn.addForms = function(idform){ var myform = ""+ " "+ " Field A ("+$countForms+"): "+ " "+ " Field B ("+$countForms+"): "+ " "+ " "+ " "+ "
"; if(idform=='mybutton'){ myform = $(""+myform+""); $("button", $(myform)).click(function(){ $(this).parent().parent().remove(); }); $(this).append(myform); $countForms++; } }; })(jQuery);
您的问题在于追加字段的位置。 您正在表单外添加表单字段。
您附加表单的逻辑:
if(idform=='mybutton'){ myform = $(""+myform+""); $("button", $(myform)).click(function(){ $(this).parent().parent().remove(); }); $(this).append(myform); $countForms++; }
应该:
if(idform=='mybutton'){ myform = $(""+myform+""); $("button", $(myform)).click(function(){ $(this).parent().parent().remove(); }); $("formelement").append(myform); $countForms++; }
假设您修改表单标记以指定formelement
的id。 根据需要进行调整。