gpt4 book ai didi

javascript - 取消输入类型 ="file"上的事件隐藏

转载 作者:行者123 更新时间:2023-12-03 23:38:19 25 4
gpt4 key购买 nike

我已阅读 Cancel event on input type="file" ,但是当输入标签被隐藏时这不起作用,焦点不会转到输入标签。
我希望在操作系统文件选择器关闭时重新呈现按钮 - a。在选择任何文件之后,b。无需选择文件并单击取消按钮
useState/useForceUpdate/useReducerButton.onClickinput.onChange|onClick事件在用户实际选择文件时起作用,但在用户单击取消按钮而不选择文件(或当用户使用键盘单击 Esc 键时)时“不”。input.onFocus没有触发。当用户在没有选择文件的情况下关闭文件选择器(取消/Esc 键)时,有没有办法重新渲染按钮?

const [, forceUpdate] = React.useReducer((x) => x + 1, 0);

return (
<>
<input
type="file"
ref={uploadRef}
id={`${toolbarButtonId}`}
accept={acceptParams}
onChange={onClickEvent}
onClick={onClick}
hidden
onFocus={forceUpdate}
/>
<Button
ariaLabel={ariaLabel}
ariaDescription={ariaDescription}
disabled={disabled}
iconName={iconName}
id={toolbarButtonId}
position={position}
onClick={fileUploadRefLink}
{...props}
/>
</>
);

最佳答案

您可以在窗口上添加一个焦点事件,以便在用户关闭文件输入对话框后重新获得焦点时进行观察。

let button = document.querySelector("button");
let input = document.querySelector("input");

let renderCount = 0;

let pageRefocused = () => {
button.textContent = `User closed the dialog ${++renderCount} times`;
window.removeEventListener("focus", pageRefocused);
};

button.addEventListener("click", () => {
input.click();
// we watch the window after opening the file input dialog
window.addEventListener("focus",pageRefocused);
});
input {
visibility:hidden;
}
<button>Upload a file</button><input type="file">

关于javascript - 取消输入类型 ="file"上的事件隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67999065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com