Autor Zpráva
Prochy
Profil
Dobrý večer,

mám formulář, kde mám např. pole id zákazníka a vedle toho pole bych chtěl mít tlačítko vyhledat, otevře se nové okno s vyhledáváním, tam daného zákazníka vyhledám např. podle jména potvrdim okno se zavře a dané id se přenesee do prvního formuláře. Je to možné nějak udělat?Myslim si, že sem to na nějakých stránkách viděl, bohužel už nevim kde. Že to poběží přes javascript mi je celkem jasné, to by až tak nevadilo. Nejlepší by bylo, kdyby to šlo udělat bez refreshe předchozí stránky. Nevim pod jakým názvem bych to mohl najít na internetu.

Děkuji za odpověď.
Str4wberry
Profil
Myslím, že by šlo použít podobný trik jako při uploadu bez obnovení stránky.
Prochy
Profil
Nakonec sem našel někde stránku, kde se to používá a vytáhl sem si to z ní. Jestli to je správné řešení nevim, ale funguje.

Řešení:
Hlavní skript:
var forms = [];
var RE_NUM = /^\-?\d+$/;
var target;

function selectField(objTarget,link) {

    // assing methods
    this.popup    = formPopup;    
    this.link = link;
    // validate input parameters
    if (!objTarget)
        return showError("Error calling the form: no target control specified");
    if (objTarget.value == null)
        return showError("Error calling the form: parameter specified is not valid tardet control");
    this.target = objTarget;
    target = this.target;        

    // register in global collections
    this.id = forms.length; 
    forms[this.id] = this;      
}

function formPopup () {        

    var objWindow = window.open(
        this.link,
        'Calendar', 'width=500,height=200,status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes'
        );
    objWindow.opener = window;
    objWindow.focus();
}



function showError (message) {
    alert (message);
    return null;
}

Stránka s formulářem:
<td><a onclick="customerZC.popup();" href="#">Vyhledat</a></td>
<script language="javascript" type="text/javascript">
   var customerZC;
   var service;
   var contact
   window.onload = function (oEvent){ 
    customerZC = new selectField(document.forms['frm-newCaseForm']
    .elements['frmnewCaseForm-customerZC'],{link Script:searchCustomer, idField=>0}); //název pole, kam bude vložen text a stránka která se má otevřít
    service = new selectField(document.forms['frm-newCaseForm']
    .elements['frmnewCaseForm-selectService'],{link Script:searchCustomer, idField=>1});
    contact = new selectField(document.forms['frm-newCaseForm']
    .elements['frmnewCaseForm-selectContact'],{link Script:searchCustomer, idField =>2});    
   }
</script>

Otevřená stránka
<script language="JavaScript">
var re_id = new RegExp('idField=(\\d+)');
var num_id = (re_id.exec(String(window.location))
        ? new Number(RegExp.$1) : 0);    
var objCaller = (window.opener ? window.opener.forms[num_id] : null);

function setValue(value, bClose) {
        if (!objCaller) alert('Error');      
        objCaller.target.value=value;                            
        if (bClose) {
                window.close();                                    
        }
}

</script>
Potom už stačit v otevřené stránce zavolat funkci setValue(value,bClose) a hodnota se nastaví v požadovaném poli.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0