我正在使用一个简单的颜色选择器,您可以在其中单击一种颜色,然后会出现一个颜色小的示例,其中带有“提交”按钮,因此您可以选择/提交该颜色.
我使用jQuery将提交按钮添加到单击的颜色中,但由于某种原因我的提交按钮未提交.
因此,当您单击一种颜色时,此段将添加带有提交的弹出窗口:
$(this).addClass('selected_color').html(
num + '<div class="this_color"><div class="color_example">Color value</div><input type="submit" name="submit_color" value="Selecteer kleur"/></div>');
提交形式为FORM,名称为“ submit_color”
PHP:
if(isset($_POST['submit_color'])) :
$_SESSION['wz_color'] = $_POST['wz_color'];
endif;
我将颜色的值放在名称为wz_color的隐藏字段中.
但是为什么我的按钮不提交?这是因为它是稍后由jquery添加的吗?
解决方法:
当您点击按钮时,点击事件会传播到< span>包含它,并且该事件处理程序再次被触发.这似乎在干扰表单提交.
尝试立即阻止它:
$(this).addClass('selected_color').html(num + '<div class="this_color"><div class="color_example">Color value</div><input type="submit" name="submit_color" value="Selecteer kleur"/></div>');
$('[name=submit_color]').click(function(e) { e.stopPropagation(); });
http://jsfiddle.net/mblase75/ve5Kh/
请注意,使用$(document).on(‘click’,'[name = submit_color],function(e){…})委派取消操作不起作用,显然是因为该事件起泡到其之前的跨度一直气泡到文档.