admin管理员组

文章数量:1424955

I wrote a code, but it doesn't work.

Code:

<?php
$number = $_GET["tel"];
echo '<form action="/" method="get">
         <a>Enter the phone number, what you want to call</a>
         <input type="tel" name="tel"/>
         <input type="submit" onclick="call()" value="Call"/>
      </form>
      <script>
          function call() {
              window.open("tel:$number");
          }
      </script>
';

I wrote a code, but it doesn't work.

Code:

<?php
$number = $_GET["tel"];
echo '<form action="/" method="get">
         <a>Enter the phone number, what you want to call</a>
         <input type="tel" name="tel"/>
         <input type="submit" onclick="call()" value="Call"/>
      </form>
      <script>
          function call() {
              window.open("tel:$number");
          }
      </script>
';
Share Improve this question edited Aug 23, 2017 at 10:13 Vadim Kotov 8,2848 gold badges50 silver badges63 bronze badges asked Dec 27, 2015 at 13:27 Bence8OSBence8OS 111 gold badge1 silver badge2 bronze badges 1
  • 1 you're mixing php and javascript. when the user hits the submit-button, the javscript function gets called, but that doesn't have any value for $number yet; because this would only be set if after the form is submitted. – Jeff Commented Dec 27, 2015 at 13:33
Add a ment  | 

1 Answer 1

Reset to default 2

In PHP, variables in strings are only allowed in double quotes. Change your single quotes to double quotes to make the $number work in the string.

See this SO post for more details.

Therefore, your code should look like:

<?php
    $number = $_GET["tel"];
    echo "<form action='/' method='get'>
                <a>Enter the phone number, what you want to call</a>
                <input type='tel' name='tel' />
                <input type='submit' onclick='call()' value='Call' />
            </form>
            <script>
                function call() {
                    window.open('tel:$number');
                }
            </script>
        ";
?>

But this code is strange. Here's how it flows:

  1. get $_GET variable tel (assuming form has already been sent)
  2. echo out the form
  3. on form submit, the number in the $_GET["tel"] is visited, not the number in the form
  4. then, the form gets submitted, but this doesn't work because the window.open() has occurred already

Here's an alternate solution without PHP (and without an actual form send):

<form action='/' method='get'>
<a>Enter the phone number, what you want to call</a>
    <input type='tel' name='tel' />
    <input type='submit' onclick='call();return false;' value='Call' />
</form>
<script>
    function call() {
        var number = document.querySelector("input[name=tel]").value;
        window.open('tel:' + number);
    }
</script>

See it working at JSFiddle.

本文标签: javascriptHTML amp PHPType a telephone numberand call itStack Overflow