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 ' '; echo ' '; echo ''; } echo '
', $diam['a'], '', $diam['b'], '
'; } ?>
Field A Field B

代码的第一部分是一个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。 根据需要进行调整。