【问题标题】:Validate that a URL entered in a form is from a specific website with javascript验证表单中输入的 URL 是否来自使用 javascript 的特定网站
【发布时间】:2011-08-27 19:01:10
【问题描述】:

我有一个网站,人们可以在其中发布来自 Google+ 的链接。我试图确保人们只能发布来自 Google plus 的特定链接。一个例子是,有人需要发布一个链接,比如 https://plus.google.com/games/907809777960/params/%22%7B%5C%22encPrms%5C%22%3A%5C%22eyJiYXBpVGlja2V0SWQiOiI4MzFhNGQ0Ny0yYTU4LTQ2OTktYmI1Yy1hN2ExYTAzY2U4ZTMiLCJsYW5kaW5nUGFnZSI6Im5ld3NmZWVkL2JvbnVzYWJsZUZlZWQvbWFydmVsY29tcGxldGUvNTQ3Mjc3LzEzMTQ0NzA0MjUvMCIsInJlZl9pZCI6IjEwOTkyODAzNzUzNzQ2Mjk5NzAxMCIsInRyYWNrIjoibmV3c2ZlZWQtYm9udXNfbWFydmVsQ29tcGxldGUtMCIsInNlbmRfdGltZXN0YW1wIjoiMTMxNDQ3MDQyNyJ9%5C%22%7D%22/source/3。 我想确保链接以https://plus.google.com/games/907809777960/params/开头或至少包含https://plus.google.com/games/907809777960/params/,否则不会提交链接并提示链接无效。我到目前为止的代码是。

<script type="text/javascript" language="JavaScript"> 
function checkForm(theForm) {
if (form.bonuslink.indexOf("https://plus.google.com/games/907809777960/params/") == -1)
    { alert('You can only enter authentic Google + links'); return false; }             
else { 
return true; }
}
</script>
<form action="submitbonus.php" onsubmit="return checkForm(this);" method="post">
 Bonus Link: <input name="bonuslink" type="text" size="40" />  <input name="Submit" type="submit" value="Submit Bonus" /><br />
</form>

由于某种原因,我无法让它工作。无论输入什么,它每次都会提交。我对javascript不是很熟悉,所以任何帮助都将不胜感激。

【问题讨论】:

  • indexOf: This method returns -1 if the value to search for never occurs.
  • 我已经在字段中放置 -1 而不是 0 的地方完成了它,但那也可以工作。
  • 使用==进行比较

标签: javascript forms validation url


【解决方案1】:

edit 编辑:您有两个问题需要引用 bonuslink 值而不是 DOM 元素本身,并且您需要将其称为“theForm”而不是“form”的成员,因为这就是您所说的参数。除此之外一切都应该没问题。

<script type="text/javascript" language="JavaScript"> 
function checkForm(theForm) {
    if (theForm.bonuslink.value.indexOf("https://plus.google.com/games/907809777960/params/") == -1){ 
        alert('You can only enter authentic Google + links'); 
        return false; 
    } else { 
        return true;
    }
}
</script>
<form action="submitbonus.php" onsubmit="return checkForm(this);" method="post">
 Bonus Link: <input name="bonuslink" type="text" size="40" />  <input name="Submit" type="submit" value="Submit Bonus" /><br />
</form>

【讨论】:

  • 阿米尔。我累了,但没有用。我不知道我是在检查表格错误还是什么。它似乎完全提交并避免了javascript调用。我也更新了问题中的代码。
  • 您是否附加了要提交的事件处理程序?
  • 我完全复制了您的代码,但无论我输入什么,它仍然在提交。你可以在这里查看我正在开发的网站。 gpluscow.com/bonustest.php
  • 对不起我写了但我没有添加,你需要将bonuslink更改为bonuslink.value,我更新了代码
【解决方案2】:

这个正则表达式将从任何字符串中提取域名。 基本上它会返回从 http:// 等开始的部分。

/((https?|s?ftp|dict|www)(://)?)[A-Za-z0-9.\-]+)/gi

它将检测以下形式:

享受吧。

【讨论】:

    猜你喜欢
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多