simulare click in caseta input

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
andras
Mesaje: 430

simulare click in caseta input

Salut,
Cind se deschide pagina user-ul trebuie sa dea click pe un <input type="text" id="datapk"> sa-si aleaga un parametru. Cum fac sa-l "scutesc" de primul click si sa fortez eu click-ul in input? Am incercat cu :

Cod: Selectaţi tot

document.getElementById('datapk').click(); 
document.getElementById('datapk').onclick(); 
 $('#datapk').trigger('click');    
 $('#datapk').click();     
 $('#datapk').onclick();

dar nu se face click. Trebuie sa pun mai intii focus-ul pe el? Multumesc.

MarPlo Mesaje: 4343
Salut
Functia click() se poate folosi pentru a simula click pe un element, dar nu face nimic daca acel element nu e un buton /link sau nu are inregistrat inainte un eveniment "onclick".
Click-ul nu face nimic pe o caseta de tip "text", daca nu ai setat dinainte un "'onclick" care sa faca ceva.

Daca ceea ce vrei e sa duci utilizatorul direct pe acea caseta, merge cu focus() si select().

Cod: Selectaţi tot

var datapk = document.getElementById('datapk')
datapk.focus();
datapk.select();

andras Mesaje: 430
Elementul are setat onclick(), definitia lui este:

Cod: Selectaţi tot

<input style="font-size:24px; text-align: center; width: 240px;margin-left: 500px;" type="text" class="datapk" id="datapk" name="datapk"  onclick="showD(); submitf1(this);"  title="Click aici pentru a alege Data" >
iar functia din js este:

Cod: Selectaţi tot

<script type="text/javascript">
function submitorar() {
document.getElementById("lab").style.visibility="visible";
document.getElementById("datapk").style.visibility="visible";   // aici il fac vizibil
var x = document.getElementById('idsala').value;
var y = document.getElementById('idactivitate').value;
var data_json={"x":x, "y":y };
my_ajaxo("orar.php",data_json,"post");
function my_ajaxo(phpfile, data_json, type) {      // afiseaza orar
    $.ajax({
        async:false,
        type: type,
        url: phpfile,
        data: data_json,
        success: function(msg) {
        //    alert(msg);
            $('#iddivorar').html(msg);             
        }
    });
}  
var datapk = document.getElementById('datapk'); // aici vreau sa-l determin sa faca onclick-ul de mai sus
datapk.focus();
datapk.select();     
}
</script>
Focus-ul e plasat la functia care face vizibil elementul (initial este visibility:hidden;), este o alta functie Ajax(), dar tot nu merge.
Am incercat sa le pun si la succes: dar tot nu reusesc. Unde am gresit?

MarPlo Mesaje: 4343
O varianta mai simpla la ce vrei sa faci e sa apelezi functiile care sunt accesate la click pe acea caseta text.
Adica, in locul unde vrei sa se faca auto-click, apelezi functiile acelea:

Cod: Selectaţi tot

showD();
submitf1(document.getElementById('datapk'));
- focus() si select() nu simuleaza click, ci doar aduc cursorul in acea caseta.

Oricum, daca vrei cu simulare auto-click, uite un exemplu functional. Te poti inspira din el.

Cod: Selectaţi tot

<input style="display:none;" type="text" id="datapk" name="datapk"  onclick="clickDatapk(this);" title="Titlu" />
<br/><input type="button" id="btn" value="Click" />
<script>
// function called when click on button
function clickButon() {
  // make text-field visible and simulate click
  var datapk = document.getElementById('datapk');
  datapk.style.display = 'block';
  datapk.click();     
}

// function called when click on text-field
function clickDatapk(e){
  alert('Input text clicked, ID: '+ e.id);
}

// onclick event for button
document.getElementById('btn').addEventListener('click', clickButon);
</script>
Demo:
When you click on this button, it makes the text-field visible and also simulate the auto-clik on that field.
Then, if you click on the text fied, it shows same result.