如何使用页面名称作为文本框值

时间:2013-05-10 16:21:33

标签: javascript variables textbox popup

我正在尝试使用Javascript实现一些功能。我有点像菜鸟,所以请耐心等待。

首先我使用此代码创建一个弹出窗口:

HTML:

<a href="JavaScript:newPopup('contact.html');"><img src="request.jpg"/></a>

JS:

var sPage;

    function newPopup(url) {
    popupWindow = window.open(
        url,'popUpWindow','height=400,width=800,left=10,top=10,resizable=no,scrollbars=no,toolbar=no,menubar=no,location=no,directories=no,status=no');
        var sPath=window.location.pathname;
        var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
        window.name = sPage;
}

这部分工作正常,但我接下来要做的是获取当前页面名称并将其放入'contact.html'中文本框的值。

这是我在弹出页面上使用的代码,试图这样做:

function add(text){
    var TheTextBox = document.getElementById("prodcode");
    TheTextBox.value = TheTextBox.value + window.name;
}

当它是我正在链接的普通页面时,这似乎有效,但如果它是一个弹出窗口它就不会工作。我也无法弄清楚如何从页面名称中删除扩展名。

我意识到可能有一百万种更好的方法可以做到这一点,但这对我来说似乎最有意义。我看过饼干,但我似乎无法弄清楚它们。

我知道我问了很多,但是非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,您可以将窗口名称作为查询参数传递到您传递给newPopup函数的网址中,然后在contact.html页面中抓取它以将其设置为进入盒子。

例如,您的newPopup函数可以将查询参数添加到网址中,如下所示:

function newPopup(url) {
    var sPath=window.location.pathname;
    var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
    var windowName = sPage.split(".")[0];    
    popupWindow = window.open(url + '?window_name=' + windowName,'popUpWindow','height=400,width=800,left=10,top=10,resizable=no,scrollbars=no,toolbar=no,menubar=no,location=no,directories=no,status=no');
    window.name = windowName;
} 

然后,在您的contact.html文件中,使用以下逻辑设置文本框的值时抓取查询参数:

function parseURLParams(name, locat) {
    var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(locat);
    if (results) {
        return results[1] || "";
    } else {
        return "";
    }
}
function add(text) {
    var TheTextBox = document.getElementById("prodcode");
    TheTextBox.value = TheTextBox.value + parseURLParams("window_name", window.location.href);
}

希望它有所帮助!