下拉列表和ajax问题 就是有一个下拉列表,选中一项,按“增加”按钮会利用ajax弹出一个表,供输入数据, 怎么才能使得再按“增加”时阻止出现相同的表呢,也就是说怎么才能使下拉中的选项都只能增加一次??? 求高手解决啊!本人新手,纠结了好久了啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 js里面设置一个数组,对应下拉选择的各项,预设为1,点增加时检测是否为1,true则允许增加当完成增加的ajax后,把对应项赋值为0当然,服务器端也要有必要的检测,免得有人绕过js偷步提交 ajax弹出一个表是何意思?弹出一个来自数据库数据的表还是JS数组自己定义的,你选择的时候是可以多选还是只能单选? 在你写的JS里面定义一个全局变量 第一次点按钮的时候改为1然后在Ajax里面判断下是不是《2是的就执行否则不执行 在下拉列表框换了之后点击按钮那个不就是2了嘛 那么就不会执行了更不会添加表了 你可以用jquery(基于js的y一个库,用js直接来做会很复杂)来做,按增加按钮后,用$.post或$.get启动ajax流程,后台可以用php文件搜索数据,再用xml或html格式返回所有次分类的数据,现在数据到了前端了,可以使用添加节点、插入节点的方式做一个你需要显示数据的方式。最后解决的是两次单击检测问题,你只需要在上步新建的父节点中添加一个class,在单击时用hasclass检测如果有这个class,说明次分类已经创建了,就这样了 function ajaxSubmit(){ var inputval = jQuery('#addinputval').val(); jQuery("#addtoSelect").find("option").each(function (){ if(jQuery(this).attr('value') == inputval){ alert('已存在!'); return false; } }); jQuery.ajax.post(**********); jQuery("#addtoSelect").append("<option value='"+inputval+"'>"+inputval+"</option>");} 也可以用另一种方式,避免并不必要的提示——这其实很烦人,为什么不让一切悄然无声顺顺利利呢。仅仅为了显示某种设计上的考虑而用提示不断提醒用户?用户可是不管你辛苦不辛苦,只会很反感的。SELECT里选中某项后,如果点击“增加”,在发出AJAX请求后的SUCCESS事件中顺手把SELECT里当前项给删除(如果为了防止当前项被用户改变发生不对应,可在“增加”时用变量记忆,删除时删除变量对应的项目)。这样,凡是增加的,就不再在SELECT中出现,也就避免误选了。否则,你仍然出现在那里,用户难免误选,然后就一次一次看到讨厌的提示。相应的,既然删除了,也需要在弹出的表的关闭事件里再把这一项给添加回SELECT里去,供再次选择“增加”。如果是多表同时操作,应建立一个数组,使每个操作的选项与弹出表关联。如果是单表,只需一个对一个即可。 楼上的这种做法我听别人说过,但是由于刚学php,做不出来啊。不过已经通过设置一个全局变量得到了解决。。谢谢各位的解答,现在散分啦!哈哈 PHP文件自动上传 mysql 修改字段问题 如何 把.txt文件导到mysql 中 问一个比较菜的问题,我做一个留言板,想得到提交留言人的IP怎么做? 在一个购物网站里,如果有客户订单,用什么方法可以立刻把订单发到我的邮箱里 在上传图片时一大一小图片的问题 兄弟姐妹们帮忙呀:) 关于使用模板:请教这是什么错误?? cookie不能保存PHP中的类对象吗? 关于javascript调用php问题,急,,高分! PHP如何刷新文本框? 如何替换固定字符串后的字符串
点增加时检测是否为1,true则允许增加
当完成增加的ajax后,把对应项赋值为0当然,服务器端也要有必要的检测,免得有人绕过js偷步提交
最后解决的是两次单击检测问题,你只需要在上步新建的父节点中添加一个class,在单击时用hasclass检测如果有这个class,说明次分类已经创建了,就这样了
function ajaxSubmit(){
var inputval = jQuery('#addinputval').val();
jQuery("#addtoSelect").find("option").each(function (){
if(jQuery(this).attr('value') == inputval){
alert('已存在!');
return false;
}
});
jQuery.ajax.post(**********);
jQuery("#addtoSelect").append("<option value='"+inputval+"'>"+inputval+"</option>");
}