2009-10-20 54 views
0

這看起來很奇怪,但我希望能夠使用通過GET參數列表傳入的值填充靜態Web窗體。使用jQuery重置來自GET url params的輸入值

說我有一個頁面,「self.html」:

<form action="self.html" method="get" accept-charset="utf-8"> 
    <label for = "40">New Question?</label> 
    <input type="radio" name="40" id="40" value="Yes"> Yes &nbsp; 
    <input type="radio" name="40" id="40" value="No"> No 
    <label for = "41">What's your favourite colour?</label> 
    <input type="text" name="43" value="" id="41"> 
</form> 

我需要的表格,每當輸入更改提交自己:

$(document).ready(function(){ 
    $('input').change(function(){ 
     $("form:first").submit(); 
    }); 
    // collate_results(); 
    }); 

但很明顯,我想保留值,以便它們在重新加載時不會重置。 (爲什麼?因爲我在FileMaker Web視圖中執行此操作,並且將數據從表單中提取出來的唯一方法是獲取源代碼 - url並對其進行解析...因此我需要將url更新以反映形式的當前狀態,並且還能夠在任何新的記錄,我要顯示的數據傳遞...)

UPDATE:

這裏是我的非工作的代碼 - 它的罰款單值字段,但單選按鈕失敗...

$('input').change(function(){ 
    $("form:first").submit(); 
}); 
var qString = jQuery.url.attr("query"); 
if(qString) { 
    qString = qString.split("&"); 
    $(qString).each(function() { 
    var parts = this.split("="); 
    var item = $('#'+parts[0]); 
    if($(item).attr('type') == 'text') { 
     $('#'+parts[0]).val(parts[1]); 
    }; 
    if($(item).attr('type') == 'radio') { 
     $(item).each(function() { 
     console.log(this); 
     if($(this).val() == parts[1]) { 
      $(this).attr('checked','checked'); 
     } else { 
      $(this).attr('checked',''); 
     } 
     }); 
    }; 
    }) 
} 
}); 

問題是我有多個單選按鈕,其值爲yes,no,na,因此jQuery想要這樣做的方式似乎不適用。我可以重新標識單選按鈕,如果有幫助...

<form action="self.html" method="get" accept-charset="utf-8"> 
    <label for = "40">New Question?</label> 
    <input type="radio" name="47" id="47_yes" value="Yes">Yes &nbsp; 
    <input type="radio" name="47" id="47_no" value="No" checked> No 
    <label for = "48">What's your favourite colour?</label> 
    <input type="text" name="48" value="" id="48"> 
</form> 

回答

0

這裏的東西有點的作品......但URL編碼和值的解碼仍然有問題...

$(document).ready(function(){ 
    $('input').change(function(){ 
    $("form:first").submit(); 
    }); 
    var qString = jQuery.url.attr("query"); 
    if(qString) { 
    qString = qString.split("&"); 
    $(qString).each(function() { 
     var parts = this.split("="); 
     var items = $("input[name^='"+parts[0]+"']"); 
     var myval = decodeURI(parts[1]); 
     $(items).each(function() { 
     var item = this; 
     if($(item).attr('type') == 'text') { 
      $('#'+parts[0]).val(myval); 
     }; 
     if($(item).attr('type') == 'radio') { 
      if($(item).val() == myval) { 
      $(item).attr('checked','checked'); 
      } else { 
      $(item).attr('checked',''); 
      } 
     }; 
     }); 
    }) 
    } 
}); 
0

更好的方法可能是實現AJAX提交每次輸入更改。
但要閱讀GET參數,您可以使用jQuery的插件http://www.mathias-bank.de/2007/04/21/jquery-plugin-geturlparam-version-2/

+0

爲的FileMaker讀書,我需要設置在該GET PARAMS表單輸入值URL不知道AJAX如何在這種情況下提供幫助。 我正在使用jQuery.url.attr(「查詢」)來獲取查詢字符串...現在只需要弄清楚如何重置GET參數中的單選按鈕而不更改名稱或ID ... – Dycey 2009-10-20 15:59:13

+0

那麼,如果你有那麼它應該只是填充值 - '$('input [name ='+ urlParam [i] .name +']')。val(urlParam [i] .value);' – 2009-10-20 19:14:49

+0

.. 。除了單選按鈕... – Dycey 2009-10-22 10:09:04