我有一个下拉菜单列表,该菜单显示所有当前语言。
问题:我该如何进行,因此每当我单击我的语言for foreach循环中的链接时。它将触发提交下面的表格。
<ul class="dropdown-menu" role="menu">
<?php foreach($languages as $language) {?>
<li><a id="language-form"><?php echo $language['name'];?></a></li>
<form action="<?php echo base_url('admin/common/header/set_lang');?>" id="lang" method="post">
<input type="hidden" name="lang" value="<?php echo $language['code'];?>" />
</form>
<?php }?>
</ul>
您可以使用Ajax简化此代码,而不是生成许多表单。
请参阅以下代码
<ul class="dropdown-menu" role="menu">
<?php foreach($languages as $language) {?>
<li class="lang-item">
<a value="<?php echo $language['code'];?>">
<?php echo $language['name'];?>
</a>
</li>
<?php }?>
</ul>
<script>
$(document).on('click', '.lang-item', function(){
var value = $(this).find('a').attr('value');
$.ajax({
method: 'POST',
url: "<?php echo base_url('admin/common/header/set_lang');?>",
contentType: false,
data: "lang=" + value
}).then(function(){
console.log('language successfully update');
});
});
</script>
尝试以下:
$('.dropdown-menu').on('click', 'a', function() {
$(this).siblings('form').submit();
});
1st .. iD应该是唯一的..尝试使用类
class="language-form"
而不是
id="language-form"
第二个通过单击li
提交表格$('dropdown-menu li').on('click',function(){
$(this).next('form').submit();
});
第三名通过单击li中的锚来提交表格,然后将ID更改为class
$('dropdown-menu li .language-form').on('click',function(e){
e.preventDefault();
$(this).closest('li').next('form').submit();
});