Javascript: анализировать параметры из URL, а затем стирать их в URL - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь предварительно заполнить некоторые поля, которые передаются из URL как пара параметров.Имея

www.example.com.com / myForm # myinput = 123

как отправка href конечным пользователям, я собираюсь предварительно заполнить поле формы "myinput"с "123" после открытия ссылки.Тем не менее, пользователи также увидят www.example.com.com/myForm#myInput=123 в своем браузере.Вот почему я хочу стереть «myInput = 123» из их URL.Причина в том, что я не хочу, чтобы мои пользователи видели или даже меняли значения в URL при заполнении формы.

Я пробовал

history.pushState (null, '', '/ modifedURL')

либо в теле HTML "onload", либоJQuery "Док готов".До сих пор я пытался, это работает только автономно без каких-либо параметров в URL, таких как "www.example.com.com/myForm", но не с дополнительными введенными параметрами.Вот упрощенная версия кода, которую я получил до сих пор. Обратите внимание, что метод modifyURL вызывается успешно, но не влияет на URL:

<head>
    <meta charset="utf-8" />
</head>
<body onload="prefill();">
    Your Body Content

    <!-- Scripts at the bottom for improved performance. -->
    <!-- jQuery, required for all responsive plugins. -->
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>


    <form  id="myForm"   method="POST">
        <input id="myinput" maxlength="50" name="myinput"  type="text"  />
        <br>
        <input type="submit" name="submit"   />
    </form>

    <script>        
        $(document).ready(function() {


            //do some code after html is loaded
        });

        /*
        window.onload = function () { 

        }        
        */   

        function prefill() {                               
            try{
                var currentURL = window.location.href;
                var n = currentURL.search("#");
                var sPageURL = currentURL.substring(n+1);   

                var urlVal = getURLVal(sPageURL);

                document.forms["myForm"]["myInput"].value = urlVal;

                //change URL is called, but cannot change the URL!
                modifyURL();


            } catch(e){
                alert("error " + e);  
                return false;
            }
            return true;

        }
        function modifyURL() {
            history.pushState(null, '', '/modifedURL'); 
            //even alert will fire, so pushState is skipped!!
            alert('URL modified');   
        }

        function getURLVal(query) {
            //parse parameter pair in url
        }                                       
    </script>
</body>

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете включать данные прямо в ваш HTML, если они всегда должны быть одинаковыми.
Есть два способа:
1. <input id="myinput" maxlength="50" name="myinput" type="text" value="123" />
это фактически помещает значение в ваше поле ввода
2. <input id="myinput" maxlength="50" name="myinput" type="text" placeholder="123" />
он отображается только до того, как пользователь вставит любое реальное значение (при отправке вы не получите никакого значения)

Надеюсь, это полезно для вас

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