我有一个组合框和两个文本框,当组合框的值更改时,我查询了一个文本框的数据并将其发送到通过帖子页面。此第二个文本框也会发生同样的情况,但它依赖于第一个文本框的值。更改组合框时,将同时更改这两个文本框。我尝试在第一个文本框上更改第二个文本框,但是在这种情况下什么也没有显示。
我的代码如下:
//Fetch Value for Textbox 1 and post to page
$('#combobox').change(function(){
var cs = $('#irrelevantcombobox').val();
var pj = $('#irrelevantcombobox2').val();
var vd = $('#combobox').val();
var data_String;
data_String = 'cs='+cs+'&pj='+pj+'&vd='+vd;
$.post('ft-numbervendorpo.php',data_String,function(data){
var data = jQuery.parseJSON(data);
$('#textbox1').val(data);
});
$('#textbox1').val('');
$('#textbox2').val('');
});
//Fetch value for Textbox 2 and post to page
$('#combobox').change(function(){
var countpre = $('#textbox2').val();
var p = $('#irrelevantcombobox').val();
var c = $('#irrelevantcombobox2').val();
var v = $('#combobox').val();
var cp = (parseInt(countpre)+1);
var data_String;
data_String = 'p='+p+'&c='+c+'&v='+v+'&cp='+cp;
$.post('ft-final-v-po-num.php',data_String,function(data){
var data = jQuery.parseJSON(data);
$('#textbox2').val(data);
});
});
当我将文本框2 的$('#combobox').change(function(){
更改为$('#textbox1').change(function(){
时,什么也没出现。当前,使用上面的代码,输出为#####-##-##-NaN
。其中#
是变化的数字。所需的输出是#####-##-##-('#textbox1' + 1)
。我不知道等待功能是否会损害页面的性能,但我认为它并不理想。
答案 0 :(得分:2)
为什么不将代码放在与第一个相同的事件中的第二个文本框中,只需将其包装在element_to_be_clickable()
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
cap = DesiredCapabilities.INTERNETEXPLORER.copy()
cap['INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS'] = True
driver = webdriver.Ie(capabilities=cap, executable_path=r'C:\Utility\BrowserDrivers\IEDriverServer.exe')
driver.get('https://google.com')
search = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.NAME, 'q')))
search.send_keys("selenium")
search.submit()
或者您可以使用第一个POST请求中的成功选项来触发第二个POST请求
.done
但是,我建议,如果您使用的是jQuery(至少是jQuery 1.5)的足够新的版本(可能正在查看您的代码),则应使用$('#combobox').change(function(){
var cs = $('#irrelevantcombobox').val();
var pj = $('#irrelevantcombobox2').val();
var vd = $('#combobox').val();
var data_String;
data_String = 'cs='+cs+'&pj='+pj+'&vd='+vd;
$.post('ft-numbervendorpo.php',data_String,function(data){
var data = jQuery.parseJSON(data);
$('#textbox1').val(data);
}).done(function() {
var countpre = $('#textbox2').val();
var p = $('#irrelevantcombobox').val();
var c = $('#irrelevantcombobox2').val();
var v = $('#combobox').val();
var cp = (parseInt(countpre)+1);
var data_String;
data_String = 'p='+p+'&c='+c+'&v='+v+'&cp='+cp;
$.post('ft-final-v-po-num.php',data_String,function(data){
var data = jQuery.parseJSON(data);
$('#textbox2').val(data);
});
});
$('#textbox1').val('');
$('#textbox2').val('');
});
结构来确保发布完成后再调用第二个。
作为旁注和个人经验。我在jQuery代码中大量使用了$('#combobox').change(function(){
var cs = $('#irrelevantcombobox').val();
var pj = $('#irrelevantcombobox2').val();
var vd = $('#combobox').val();
var data_String;
data_String = 'cs='+cs+'&pj='+pj+'&vd='+vd;
$.post('ft-numbervendorpo.php',data_String,function(data){
var data = jQuery.parseJSON(data);
$('#textbox1').val(data);
var countpre = $('#textbox2').val();
var p = $('#irrelevantcombobox').val();
var c = $('#irrelevantcombobox2').val();
var v = $('#combobox').val();
var cp = (parseInt(countpre)+1);
var data_String;
data_String = 'p='+p+'&c='+c+'&v='+v+'&cp='+cp;
$.post('ft-final-v-po-num.php',data_String,function(data){
var data = jQuery.parseJSON(data);
$('#textbox2').val(data);
});
});
$('#textbox1').val('');
$('#textbox2').val('');
});
,但我并没有真正注意到物理上可以看出的性能下降(例如,页面花费101毫秒(使用.done(function(){});
)和99毫秒(不使用{ {1}}。