php
  • jquery
  • 2012-01-11 54 views 1 likes 
    1

    我一直在尝试获取表单输入元素的值,但我只是没有任何运气。在表格中获取多个隐藏表单值的值

    我在PHP中的while循环中有以下形式,所以会有多种形式。

    <form method='POST' action=".$_SERVER['SCRIPT_NAME']." name='form_set_deadline' class='form_set_deadline'> 
        <input type='hidden' value='".$data3['unique_name']."' name='file_id' class='file_id' /> 
        <input type='hidden' value='".$user_id."' name='client_id' class='client_id' /> 
        <table> 
         <tr> 
          <td align='left'><input type='button' name='set_file_options' value='Submit' class='set_file_options' /></td> 
         </tr> 
        </table> 
    </form> 
    

    现在,我想获取jQuery的隐藏字段的值,但不知道如何访问隐藏的字段值。请记住,页面上有多种这样的表单。这里是包含在一个函数内的jquery表单。

    function setFileOptions(){ 
        $('.set_file_options').each(function(e){ 
         $(this).unbind("click").click(function(e){ 
          e.preventDefault(); 
          //set form variables 
          var file_id = // DON'T KNOW HOW TO GET THE HIDDEN FIELD INPUT VALUE? 
    
          alert(file_id); 
         }); //END THIS CLICK FUNCTION 
        }); 
    } //END MAIN FUNCTION 
    

    感谢您的帮助/提示!

    因此之后,从大家收到的所有投入,我决定使用以下方法来获取所有的表单数据:

    var form_data = $(this).closest('form').serialize(); 
    

    再次感谢!

    +0

    是'input'或'form'名称独特之处? – Biotox 2012-01-11 22:01:18

    +0

    有很多更优雅的方式来做到这一点!如何把一个简单的按钮元素(样式与jQuery用户界面)和内部传递变量的JavaScript,而不是用隐藏的表单元素涂鸦用户界面。如果给出完整的上下文,也许我们可以清理它。 – bpeterson76 2012-01-11 22:06:00

    +0

    那么,我有很多其他的表单元素,如textareas,文本输入等,我试图传递给JavaScript。 – user482520 2012-01-11 22:15:39

    回答

    3
    var file_id = $(this).closest('form').find('.file_id').val(); 
    

    另外,纯JS的解决方案:

    var file_id = this.form.elements['form_id'].value; 
    

    一个选择器选择所有<input type="hidden"/>元素:

    var hiddens = $(this).closest('form').find(':hidden'); 
    //hiddens.eq(0) = file_id 
    //hiddens.eq(1) = client_id 
    

    如果你没有什么连接到你的类名都,我建议删除这些属性,并使用名称 - 属性选择器:

    var file_id = $(this).closest('form').find('[name="file_id"]').val(); 
    
    +0

    甜蜜!这工作!我试过$(this).parent('form')。find('。file_id')。val();但这不起作用。无论如何,谢谢一堆! – user482520 2012-01-11 22:03:40

    +0

    @ user482520您应该使用'父母'从父项中选择任何元素。既然你想选择最接近的父亲,你应该使用'最接近的'。另一种使用'parents'的语法是:'$(this).parents('form:first')'(稍微慢些)。 – 2012-01-11 22:05:41

    +0

    ^实际上你的解决方案也应该工作,如果你更换'。parent()'带''.parents()'第二个遍历dom树,直到找到匹配的元素。虽然第一个只检查直接父母:) – bardiir 2012-01-11 22:06:48

    0
    var file_id = $(this).closest('table').siblings('.file_id').val() 
    
    1

    试试这个,

    $(this).closest('form').find(':hidden'); //应该让你的形式

    里面的隐藏字段,而且有可能不止一个领域,所以你可能需要迭代把所有的隐藏字段,

    var field_val = []; 
    
    $.each ($(this).closest('form').find(':hidden'), function (index) { 
        field_val [$(this).attr('class')] = $(this).val(); 
    }); 
    
    0

    您试过了吗:

    var file_id = $('input[name="file_id"]').val(); 
    
    0

    试试这个:

    var fileid = $(this).parents('form').find('.file_id').val(); 
    
    相关问题