2014-09-26 62 views
0

$ partOne = strtok的(“” $文件名);我有一个文本框假设是网址:获得价值,并传递到下一个文本框,建议

 <label>URL:</label> 
    <input name="url" type="text" id="url" size="20" /> 

而且我想获得该URL的姓氏,显示在第二个文本框,当用户点击那里键入:

<label>NAME:</label> 
    <input name="name" type="text" id="name" size="20" /> 

我试了一下:

<script type="text/javascript"> 
function myFunction() { 
    var url = document.getElementById('url').value; 
    var name = <?php $path = parse_url($_GET['url'], PHP_URL_PATH); $filename = basename($path);$partOne = strtok($filename, '.'); echo $partOne; ?>;  
    document.getElementById('name').value = name; 
} 
</script> 

,使一个按钮来测试它:

<button onclick="myFunction()">Test Button!</button> 

但它看起来像java脚本有错误,怀疑它是php在java脚本部分。 如何将我的目的归档(最终解决方案是不点击测试按钮;用户点击第二个方框,并且有可供编辑的文本)。

+0

尝试设置与' '的字符串值''像'变种名称= '';' – 2014-09-26 11:00:36

+0

那一个我试过!它不工作! – user1314404 2014-09-26 11:01:27

+0

你传什么名字?为什么不只是'echo $ partOne;',这里有什么意义保持'$ path = parse_url($ _ GET ['url'],PHP_URL_PATH); $ filename = basename($ path);'即使你没有使用这些变量? – 2014-09-26 11:04:21

回答

1

你需要一个ajax调用在那一点上。你期望的行为不能以上述方式完成。一旦页面显示在浏览器上,就没有更多的PHP,只有HTML和JS。这是因为PHP是服务器端语言。

您有两种选择可以使表单在您想要的情况下运行,或者使用Javascript执行Url处理步骤,或者在场景后面从服务器执行Ajax提取结果。

<label>URL:</label> 
    <input name="url" type="text" id="url" size="20" /> 


    <label>NAME:</label> 
    <input name="name" type="text" id="name" size="20" /> 


<script> 
$("#url").change(function() 
{ 
    $.ajax({ 

      url:"parseurl.php?key="+$("#url").val(), 
      }).done(function(data) 
      { 
        $("#name").val(data); 
      }); 
}); 
</script> 

其中parseurl.php

<?php 
    $path = parse_url($_GET['key'], PHP_URL_PATH); 
    $filename = basename($path);$partOne = strtok($filename, '.'); 
    echo $partOne; 
?> 
+0

我只是把第一部分放到java脚本中,然后放到一个名为“parseurl.php”的新文件中,但我把url放到了url框中,没有任何事情发生。 – user1314404 2014-09-26 11:17:09

+0

抱歉,$ _GET必须使用索引'key'而不是'url'。改性。 – rjv 2014-09-26 11:21:02

+0

我没有看到任何区别。你是否试过这些代码并且正在运行? – user1314404 2014-09-26 11:26:51

1

我已经试过这样:

$('input[name=url]').focusout(function(){ 
     var url = $('input[name=url]').val(); 
     if(url.indexOf('/') != -1) // If there is a slash in the url.. 'google.at/test.html' 
     { 
      var urlarray = url.split('/'); // Split the url into an array.. 
      var urlerg = urlarray[urlarray.length-1]; // Take the last item of the array 
      $('#dlist').append('<option value="'+ urlerg+ '">'+urlerg +'</option>'); 
     } 
     else 
     {   
      $('#dlist').append('<option value="'+url+'">'+url+'</option>'); 
     } 
    }); 

这是输入/ DataList控件项:

<label>URL:</label> 
    <input name="url" type="text" id="url" size="20" /> 
    <label>NAME:</label> 
    <input name="name" type="text" list="dlist" id="name" size="20" /> 
    <datalist id="dlist"> 
    </datalist> 

所以,当我写在URL输入“www.google.at/test.html”作为建议“test.html”,我得到了NAME-Input。如果我只写了一个没有“/”的宗教名字,我只能得到宗教名称。

FIDDLE LINK TRY THE DEMO

问候

+0

我需要把文档准备好或setinterval?我复制你的代码,但当我点击名称框没有任何出现 – user1314404 2014-09-26 11:19:41

+0

你使用jQuery吗?[jQuery ..试试看](http://jquery.com/)如果不是这样的 a)你试试(简单地将.js复制到根目录并用''或 将其链接到b)将功能更改为您的要求 – Bernd 2014-09-26 11:21:39

+0

是的,把 代码,但仍然无法正常工作。你可以把演示? – user1314404 2014-09-26 11:24:32