Javascript 如果URL包含字符串,则更改pageload上的输入值

Javascript 如果URL包含字符串,则更改pageload上的输入值,javascript,jquery,Javascript,Jquery,我试图根据地址栏中的URL更改输入字段的值。如果URL包含“sometext”,则输入字段值应为“按关键字或目录号搜索”,如果不包含,则输入字段值应为“按关键字搜索”。单击输入框时,占位符文本应消失 没有控制台错误,但未更改输入字段文本 window.onload = onPageLoad(); function onPageLoad() { var url = parent.document.URL; //Using parent.document.URL as this in within

我试图根据地址栏中的URL更改输入字段的值。如果URL包含“sometext”,则输入字段值应为“按关键字或目录号搜索”,如果不包含,则输入字段值应为“按关键字搜索”。单击输入框时,占位符文本应消失

没有控制台错误,但未更改输入字段文本

window.onload = onPageLoad();
function onPageLoad() {
var url = parent.document.URL; //Using parent.document.URL as this in within an iFrame.
    if (url.indexOf("sometext") > -1) {
        $("#SearchValue").val("Search by keyword or catalogue number")
    }
    else {
        $("#SearchValue").val("Search by keyword")
    }
}

<input onfocus="if(this.value.indexOf('Search by keyword') > -1){this.value = '';}" size="50" value="Search by keyword" name="SearchValue">
window.onload=onPageLoad();
函数onPageLoad(){
var url=parent.document.url;//在iFrame中使用parent.document.url,如下所示。
if(url.indexOf(“sometext”)>-1){
$(“#搜索值”).val(“按关键字或目录号搜索”)
}
否则{
$(“#搜索值”).val(“按关键字搜索”)
}
}

首先,您不需要弄乱输入控件的值,您可以使用一个
占位符
属性:

HTML

<input size="50" placeholder="" name="SearchValue" id="SearchValue">

您可以在此处尝试:

onfocus
事件中引用DOM对象,尝试使用
此.value.indexOf()
代替。@mark.hch,它修复了问题的一部分(更新了原始帖子以反映这一点)。但是,输入文本仍然没有更改。如果您在删除之前没有看到我之前的评论(我删除了,因为我提供的两个链接没有达到我的目的,因为jsfiddle的结果窗格使用的URL与父窗口不同)-尝试使用
document.URL
而不是
parent.document.URL
@mark.hch我必须使用parent.document.URL,因为这在iFrame中使用。我已经测试了这个部件,它工作正常。我不明白。如果
this.value.indexOf()
修复了
onfocus
事件,并且您的
onPageLoad
函数可以正常工作,那么哪些输入文本不会改变?我知道占位符属性,但试图找到解决方案,而不必编辑输入字段,因为这不是我的代码。然而,我接受这个答案,因为这是一个有效的解决方案。
window.onload = onPageLoad();

function onPageLoad() {
  var url = document.location.href;

  if (url.indexOf("sometext") > -1) {
    $("#SearchValue").attr("placeholder", "Search by keyword or catalogue number");
  }
  else {
    $("#SearchValue").attr("placeholder", "Search by keyword");
  }
}