代码之家  ›  专栏  ›  技术社区  ›  Dipak

使用jquery更改php生成的动态复选框值

  •  1
  • Dipak  · 技术社区  · 6 年前

    复选框值是通过php动态设置的

    <ul>
        <li><input type="checkbox" name="menu[]" value="1">Politics         
            <ul>
                <li><input type="checkbox" name="submenu[1][1]" value="2">International</li>
                <li><input type="checkbox" name="submenu[1][2]" value="2">National</li>
            </ul>
        </li>
        <li><input type="checkbox" name="menu[]" value="2">Views</li>
        <li><input type="checkbox" name="menu[]" value="3">Sport            
            <ul>
                <li><input type="checkbox" name="submenu[3][1]" value="2">Volleyball</li>
                <li><input type="checkbox" name="submenu[3][2]" value="2">Cricket</li>
            </ul>
        </li>
    </ul>
    

    现在,我可以使用jquery删除复选框值吗?我只想删除 menu[] 它有 submenu[][] .例如,我正在设置这些 菜单[] 复选框按以下方式只读。

    $('li:has(> ul)').find('[name="menu[]"]').click(false);
    

    现在我想加上这个把戏,但没用

    $('li:has(> ul)').find('[name="menu[]"]').val('');
    

      // Here value is inserted using jquery
    $('input[name="project"]').val("Good Fish");
    
      // But this is not working
    $('li:has(> ul)').find('[name="menu[]"]').val('');
    
    // This is working
    $('li:has(> ul)').find('[name="menu[]"]').click(false);
    
    
    
    $('[name="menu[]"] + ul input').click(function(){
    		$(this).closest("ul").prev("input").prop("checked", ($(this).closest("ul").find("input:checked").length > 0));
    	});
    		$(document).on('submit','#form',function(e){
    			e.preventDefault();
    		if($("[name='menu[]']:checked").length == 0){
    			alert('Missing Menu');
    			return false;
    		}
    		else {
          alert('Success')
      }
      });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <form id="form">
    <ul>
      <li><input type="checkbox" name="menu[]" value="1">Politics
        <ul>
          <li><input type="checkbox" name="submenu[1][1]" value="2">International</li>
          <li><input type="checkbox" name="submenu[1][2]" value="2">National</li>
        </ul>
      </li>
      <li><input type="checkbox" name="menu[]" value="2">Views</li>
      <li><input type="checkbox" name="menu[]" value="3">Sport
        <ul>
          <li><input type="checkbox" name="submenu[3][1]" value="2">Volleyball</li>
          <li><input type="checkbox" name="submenu[3][2]" value="2">Cricket</li>
        </ul>
      </li>
    </ul>
    <input type="text" name="project"><br/>
    
    <input type="submit" value="submit">
    </form>
    1 回复  |  直到 6 年前
        1
  •  1
  •   Bhumi Shah    6 年前

    这样就行了

    $('li:has(> ul)').find('[name*="menu"]').val('');
    

    演示: https://codepen.io/creativedev/pen/zaJreN