установить флажки после обновления страницы на основе значений флажков в строке запроса URL - PullRequest
0 голосов
/ 01 марта 2012

У меня есть набор флажков:

    <input name="LocType" type="checkbox" value="Hospital"/>HOSPITALS&#160;&#160;
    <input name="LocType" type="checkbox"  value="Office"/>  PHYSICIAN OFFICES&#160;&#160;
    <input name="LocType" type="checkbox"  value="Emergency"/>EMERGENCY CENTERS&#160;&#160;
    <input name="LocType" type="checkbox"  value="Out-Patient"/>OUT-PATIENT CENTERS&#160;&#160;
    <input name="LocType" type="checkbox" value="Facility"/>FACILITIES

Я получил их значения следующим образом и передал их по URL, после перезагрузки страницы с переданной строкой запроса я хочу проверить, какие значения флажков были переданы, иустановите эти флажки в флажок = true.

var url = "http://mysite.com/contact-us/Pages/LocationSearch.aspx?s=bcs_locations&k=";     
var checkboxValues = $("input[name=LocType]:checked").map(function() {
    return ' '+'bcslocationtype:'+"\"" + $(this).val() + "\"";}).get().join(" OR ");                 

         window.location= url +  checkboxValues;

Когда флажки «Больницы» и «Чрезвычайная ситуация» установлены и нажата кнопка «Поиск», URL выглядит следующим образом: http://mysite.com/contact-us/Pages/LocationSearch.aspx?s=bcs_locations&k= bcslocationtype: «Больница» ИЛИ bcslocationtype: «Чрезвычайная ситуация»

Теперь, почему что-то не работает, я не вижу в этом ничего плохого? Его insde document.ready () {}

//Keep the selected chkboxes checked on page redirect
    var value = window.location.href.match(/[?&]k=([^&#]+)/) || [];
    if (value.length == 2) {
        $('input[name=LocType]').each(function (index) {
            if(value[1].indexOf($(this).val())>=0)
                this.prop("checked", true); 
            }); 
    }  

1 Ответ

0 голосов
/ 01 марта 2012

Вот обновление вашего кода

 $(document).ready(function(){

   var value = window.location.href.match(/[?&]k=([^&#]+)/) || [];
   var actualValue = value[1].split(":")
    console.log(actualValue[1]);
    $('input[name=LocType]').each(function (index) {
            if(actualValue[1] === $(this).val()){
            //or use if(actualValue[1].indexOf($(this).val())>=0){
                $(this).prop("checked", true); 
            }

    }); 
});

Также обратите внимание, что для доступа к jquery-методам, таким как 'prop', вам нужно заключить 'this' в '$'.Поэтому я обновил ваш код с 'this' до '$ (this)'.Кроме того, какова цель использования «bcslocationtype:« Больница »» в качестве значения.Почему вам требуется 'bcslocationtype' в качестве значения для переменной k.Разве вы не можете просто добавить k = больницу и т.д.?

Кроме того, вы можете сделать то же самое, используя aspx.Я не уверен насчет кода aspx, но в Coldfusion я сделал бы что-то вроде следующего: Предполагая, что 'k' - это имя переменной URL

 <input name="LocType" type="checkbox" value="Hospital" <cfif isDefined("URL.k") and URL.k eq "HOSPITAL">CHECKED</cfif> />HOSPITALS&#160;&#160;

Код в теге ввода для просмотра - <cfif isDefined("URL.k") and URL.k eq "HOSPITAL">CHECKED</cfif>.Это означает, что если у меня есть переменная с именем 'k', определенная и заданная в области видимости URL, и если это значение больницы, сделайте ее проверенной.Преобразуйте его в свой код asp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...