2017-12-20 28 views
0

私はデータベースにいくつかの値を格納するフォームを持つビューを持っています。後でもう一度レコードを開くと、保存された値がクエリーストリングによって同じビューに渡され、フィールドが満たされます。単一のクエリ文字列に基づいていくつかのチェックボックスを入力してください

テキストフィールドとドロップダウンには問題ありませんが、チェックボックスでは同じ処理を行うことはできません。つまり、すべて同じjs var、同じデータベースフィールド、同じクエリ文字列、そしてチェックボックスに再度入っていなければなりません。

// for testing 
 
function displayTest() { 
 
    var contacts = $('input[name="fieldtotest"]:checked').map(function() { 
 
     return this.value; 
 
    }).get(); 
 
    $("#outputtest").val(contacts.join(",")); 
 
} 
 
$(":checkbox").change(displayTest); 
 
displayTest(); 
 

 
//gets all qs 
 
function getParameterByName(name, url) { 
 
    if (!url) { 
 
     url = window.location.href; 
 
    } 
 
    name = name.replace(/[\[\]]/g, "\\$&"); 
 
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
 
     results = regex.exec(url); 
 
    if (!results) return null; 
 
    if (!results[2]) return ''; 
 
    return decodeURIComponent(results[2].replace(/\+/g, " ")); 
 
} 
 

 
var setmyfield = getParameterByName('myqsvar'); 
 
if (setmyfield) { 
 
// something that selects the right checkboxes 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="form-group" align="left"> 
 
    <div> 
 
    <label for="fieldtotest">Field to test</label> 
 
    </div> 
 
    <div> 
 
    <input type="checkbox" name="fieldtotest" value="John Smith">John Smith<br> 
 
    <input type="checkbox" name="fieldtotest" value="Joseph Augustine">Joseph Peter<br> 
 
    <input type="checkbox" name="fieldtotest" value="Sarah Smith">Sarah Smith<br> 
 
    <input type="checkbox" name="fieldtotest" value="Caroline Gabes">Caroline Gabes 
 
    </div> 
 
</div> 
 
<input type="text" id="outputtest" size="50">

フィールドは、単純なテキストボックスがある場合、私はクエリ文字列を選択し、再びフィールドに移入する

$('#fileldid').val(qsvalueforthefield) 

を使用しますが、私はいくつかのチェックボックスのためにこれを行うことはできないでしょう単一のvar/qsで これは可能ですか?

+0

割り当て/チェックボックスに余分なクラス '更新可能-checks'を追加して詳しく説明し – Alfabravo

+0

ケア関連のDOM要素を選択するためにそれを使用しますか?それはどのようにQSを持っている値を渡すのに役立つのですか? –

答えて

1

値のリストをカンマ区切りの文字列で表示する場合は、displayTest()で作成したとおりにループして、対応するボックスにチェックマークを付けることができます。

var param = "Joseph Augustine,Caroline Gabes"; 
 
$.each(param.split(","), (i, val) => 
 
    $(":checkbox[name=fieldtotest][value='" + val + "']").prop("checked", true));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="form-group" align="left"> 
 
    <div> 
 
    <label for="fieldtotest">Field to test</label> 
 
    </div> 
 
    <div> 
 
    <input type="checkbox" name="fieldtotest" value="John Smith">John Smith<br> 
 
    <input type="checkbox" name="fieldtotest" value="Joseph Augustine">Joseph Peter<br> 
 
    <input type="checkbox" name="fieldtotest" value="Sarah Smith">Sarah Smith<br> 
 
    <input type="checkbox" name="fieldtotest" value="Caroline Gabes">Caroline Gabes 
 
    </div> 
 
</div> 
 
<input type="text" id="outputtest" size="50">

+0

パーフェクト。ありがとう。 –

関連する問題