Невозможно заменить входное значение формы на Javascipt и / или jQuery - PullRequest
0 голосов
/ 29 апреля 2020

Я знаю, что это кажется базовым c, но выслушайте меня, я пытался выяснить это для хорошего куска дня, и что-то просто не работает.

Я пытаясь заменить значение скрытого поля формы на IP-адрес посетителя. Это поле в вопросе:

    <label class="previewLabel" for="awf_field-106493013">ipaddress:</label>
    <div class="af-textWrap"><input type="text" id="awf_field-106493013" class="text" name="custom ipaddress" value=""  onfocus=" if (this.value == '') { this.value = ''; }" onblur="if (this.value == '') { this.value='';} " tabindex="503" /></div>

И вот код, который у меня есть на моей странице в настоящее время:

    <script type="text/javascript">
  function getUrlParam(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 tid = getUrlParam("adid");
            var date = Date(Date.now());
        jQuery(document).ready(function () {
           (function (){  
             jQuery.ajax({
                   async: false,
                   type: 'GET',
                   url: 'https://api.ipify.org/?format=json',
                   success: function(data) {
                        //callback
                     console.log(data.ip) //This works properly;
                            jQuery('#awf_field-106493013').val(data.ip); //This does not work
                   }
              });
                 }());


           jQuery('#awf_field-106493014').val(date.toString()); //This works properly
          if(tid != null){
           jQuery('#awf_field-106493015').val(tid.toString()); //This works properly
          }else{
            jQuery('#awf_field-106493015').val("nulltid"); //This works properly
          }

        });


</script>

Я также пытался сделать вызов и заменить на jQuery.get и замена на document.getElementById. Все остальные поля заменяются, кроме этого одного поля IP, и, как говорится в комментарии в коде, IP-адрес даже правильно печатается в консоли, прежде чем он будет сброшен при попытке замены.

Я также пытался изменить async с false на true, но это также не сработало.

Я понятия не имею, почему это ведет себя так, как есть, и мне нужна помощь.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Как оказалось, этот конкретный API-интерфейс возвращал какой-то странный json объект, после прочтения их документации я изменил https://api.ipify.org/?format=json на https://api.ipify.org/, и он отлично работал.

0 голосов
/ 29 апреля 2020

Вы говорите, что не можете получить IP-адрес в текстовое поле с идентификатором "awf_field-106493013"?

Если да, ваш код работает нормально для меня.

https://jsfiddle.net/7yqrk1hL/

<!DOCTYPE html>
<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>

<body>
    <label class="previewLabel" for="awf_field-106493013">ipaddress:</label>
    <div class="af-textWrap"><input type="text" id="awf_field-106493013" class="text" name="custom ipaddress" value=""
            onfocus=" if (this.value == '') { this.value = ''; }" onblur="if (this.value == '') { this.value='';} "
            tabindex="503" /></div>
    <script>

        $(document).ready(function () {
            (function () {
                jQuery.ajax({
                    async: false,
                    type: 'GET',
                    url: 'https://api.ipify.org/?format=json',
                    success: function (data) {
                        //callback
                        console.log(data.ip) //This works properly;
                        jQuery('#awf_field-106493013').val(data.ip); //This does not work
                    }
                });
            }());


            jQuery('#awf_field-106493014').val(date.toString()); //This works properly
            if (tid != null) {
                jQuery('#awf_field-106493015').val(tid.toString()); //This works properly
            } else {
                jQuery('#awf_field-106493015').val("nulltid"); //This works properly
            }

        });


    </script>
</body>

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